Eclipse EMF:如何通过名称访问 EAttribute?

5

我有一个Java方法,它传递了一个字符串和一个EMF EObject对象。这个字符串是用来表示该EObject对象的某个属性的名称。例如,如果传递的是"foo"和EObject对象eobj,那么它需要访问eobj.getFoo()。 我知道如何从featureID获取EAttribute的值,但似乎找不到一种通过属性名称获取其值的方法。这是否可能?

1个回答

4
以下代码可以解决问题,但并不优雅。它获取您的eObjecteClass,通过名称查找匹配的属性定义并访问它。在这里使用的getEAllAttributes()也包括由父类定义的属性。
    EObject eObject = null;
    String attributeName = "";
    EDataType resultingDataType = null;
    EList<EAttribute> eAllAttributes = eObject.eClass().getEAllAttributes();
    for (EAttribute eAttribute : eAllAttributes) {
        if (eAttribute.getName().equals(attributeName)) {
            resultingDataType = (EDataType) eObject.eGet(eAttribute);
        }           
    }
    System.out.println(resultingDataType);

7
如果您确信会获得一个属性,只需执行 eGet(eClass.getEStructuralFeature("foo"))(并进行断言)即可(不需要其他步骤)。 - Volker Stolz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接