每个人都熟悉Java的类概念。每个类都能够保存属性。我希望这些属性是动态的,这意味着我想构建一个包含variablename->值条目的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;
}
答案 0 :(得分:0)
您建议使用CustomEntry,因此我假设您不能简单地使用Map.put
。
如果你需要Map.put(CustomEntry e)
方法,你可以简单地创建一个扩展HashMap的新类,并将该方法添加到它,它是常规put(key, val)
的适配器