我有一个传递字符串和 EMF EObject 的 Java 方法。该字符串是 EObject 的属性名称。例如,如果传递“foo”和EObject eobj,则需要访问eobj.getFoo()。我知道如何从 EAttibute 的 featureID 中获取其值,但似乎找不到通过属性名称获取它的方法。这可能吗?
下面的代码应该可以解决问题,但它一点也不优雅。它获取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);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4549 次 |
| 最近记录: |