我有一个传递字符串和EMF EObject的Java方法。字符串应作为EObject属性的名称。例如,如果传递了“ foo”和EObject eobj,则需要访问eobj.getFoo()。
我知道如何从其featureID获取EAttibute的值,但似乎找不到找到通过属性名称获取它的方法。这有可能吗?
最佳答案
以下应该可以解决问题,但是一点都不优雅。它获取eClass
的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);