4

我有一个传递字符串和 EMF EObject 的 Java 方法。String 是 EObject 属性的名称。例如,如果传递了“foo”和 EObject eobj,则需要访问 eobj.getFoo()。我知道如何从其 featureID 中获取 EAttibute 的值,但似乎无法找到通过属性名称获取它的方法。这甚至可能吗?

4

1 回答 1

4

以下应该可以解决问题,但它一点也不优雅。它获取eClassyour 的eObject,按名称查找匹配的属性定义并访问它。这里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);
于 2012-11-14T03:38:05.610 回答