2012-11-13 60 views
2

我有一個Java方法傳遞一個字符串和一個EMF EObject。該字符串意味着EObject的屬性的名稱。例如,如果它通過「foo」和EObject eobj,它將需要訪問eobj.getFoo()。 我知道如何從其featureID獲取EAttibute的值,但似乎無法找到通過屬性名稱獲取它的方法。這甚至有可能嗎?Eclipse EMF:如何通過名稱訪問EAttribute?

回答

2

下面應該訣竅,但它是並不高雅。它獲得eObjecteClass,按名稱查找匹配的屬性定義並訪問它。此處使用的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); 
+5

如果你相信,你會得到一個屬性,只是在做'eGet(eClass.getEStructuralFeature(「富」))'應該足夠(和斷言)。 – ShiDoiSi