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