4

String と EMF EObject が渡される Java メソッドがあります。String は、EObject の属性の名前を意味します。たとえば、「foo」と EObject eobj が渡された場合、eobj.getFoo() にアクセスする必要があります。featureID から EAtribute の値を取得する方法は知っていますが、属性名で値を取得する方法が見つからないようです。これは可能ですか?

4

1 に答える 1

4

以下はトリックを行うはずですが、エレガントではありません。の を取得しeClasseObject一致する属性定義を名前で見つけてアクセスします。ここ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 に答える