2
我有一個Java方法傳遞一個字符串和一個EMF EObject。該字符串意味着EObject的屬性的名稱。例如,如果它通過「foo」和EObject eobj,它將需要訪問eobj.getFoo()。 我知道如何從其featureID獲取EAttibute的值,但似乎無法找到通過屬性名稱獲取它的方法。這甚至有可能嗎?Eclipse EMF:如何通過名稱訪問EAttribute?
我有一個Java方法傳遞一個字符串和一個EMF EObject。該字符串意味着EObject的屬性的名稱。例如,如果它通過「foo」和EObject eobj,它將需要訪問eobj.getFoo()。 我知道如何從其featureID獲取EAttibute的值,但似乎無法找到通過屬性名稱獲取它的方法。這甚至有可能嗎?Eclipse EMF:如何通過名稱訪問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(「富」))'應該足夠(和斷言)。 – ShiDoiSi