-1

Java 的类概念大家都很熟悉。每个类都能够保存属性。我希望这个属性是动态的,这意味着我想构建一个包含变量名-> 值条目的 Map。

因此,我的想法是自定义Map接口(使用AbstractMap或HashMap)来创建自定义的ClassAttributesMap。该地图应提供类似“attributesMap.put(new CustomEntry());”的方法。通常,像 HashMap 这样的 Map 实现提供了一个 put 方法,但它是“put(Object key, Object value);”。

我为我解决了。非常感谢您的提示!

这是满足我要求的代码:

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 回答