我有一个Java方法,它传递了一个字符串和一个EMF EObject对象。这个字符串是用来表示该EObject对象的某个属性的名称。例如,如果传递的是"foo"和EObject对象eobj,那么它需要访问eobj.getFoo()。 我知道如何从featureID获取EAttribute的值,但似乎找不到一种通过属性名称获取其值的方法。这是否可能?
我有一个Java方法,它传递了一个字符串和一个EMF EObject对象。这个字符串是用来表示该EObject对象的某个属性的名称。例如,如果传递的是"foo"和EObject对象eobj,那么它需要访问eobj.getFoo()。 我知道如何从featureID获取EAttribute的值,但似乎找不到一种通过属性名称获取其值的方法。这是否可能?
eObject
的eClass
,通过名称查找匹配的属性定义并访问它。在这里使用的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);
eGet(eClass.getEStructuralFeature("foo"))
(并进行断言)即可(不需要其他步骤)。 - Volker Stolz