-1

誰もが Java のクラスの概念に精通しています。各クラスは属性を保持できます。この属性を動的にする必要があります。つまり、変数名 -> 値エントリを保持するマップを構築したいということです。

したがって、私の考えは、Map インターフェイスをカスタマイズして (AbstractMap または HashMap を使用)、カスタム ClassAttributesMap を作成することです。このマップは、「attributesMap.put(new CustomEntry());」のようなメソッドを提供する必要があります。通常、HashMap などの Map 実装は put メソッドを提供しますが、それは「put(オブジェクト キー、オブジェクト値);」です。

私はそれを解決しました。ヒントをありがとう!

私の要件を満たすコードは次のとおりです。

public static void main(String args[]){
    DynAttClass dynClass = new DynAttClass();
    dynClass.keyset();
}

public class DynAttClass {

    private HashMap<DynAttributes, Object> attributesMap = new HashMap();

    public DynAttClass() {
        attributesMap.put(DynAttributes.var1, "value1");
        attributesMap.put(DynAttributes.var2, new Integer());
        attributesMap.put(DynAttributes.var3, new CustomObject());
    }

     //you can delegate the HashMap methods here, for example:
     public Set<DynAttributes> keySet() {
         return attributesMap.keySet();
     }

}

public enum DynAttributes {
    var1, var2, var3;
}
4

1 に答える 1

0

CustomEntry を使用することをお勧めしますので、単に使用できない理由があると思いますMap.put

そのMap.put(CustomEntry e)メソッドだけが必要な場合は、HashMap を拡張する新しいクラスを作成し、通常のアダプターであるそのメソッドをそれに追加するだけです。put(key, val)

于 2013-03-08T13:13:11.767 に答える