我正在尝试在可以全局使用的辅助bean中创建可变映射。这就是我使用它的方式:
private Map<Object, Date> myMap;
public void myMethod(){
getMyMap().put(myObject, myDate);
//I have also tried the following with the same results:
//myMap.put(myObject, myDate);
}
//setter
public void setMyMap(Map<Object, Date> myMap) {
this.myMap= myMap;
}
//getter
public Map<Object, Date> getMyMap() {
return myMap;
}
myMap的setter和getter是从我正在使用的程序自动生成的(自动设置并为其他一切工作)。
当我尝试填充Map时出现错误。它返回一个空指针异常。代码显然是简化的,但如果您需要更多信息,我很乐意给它。
使用以下方法解决了我的问题:
private Map<Object, Date> myMap = new HashMap<Object, Date>();
public void myMethod(){
myMap.put(myObject, myDate);
}
如果有人有更多建议,我会非常乐意听到它。
答案 0 :(得分:4)
我几乎肯定你在这里有设计缺陷。为map
提供getter和setter是非常罕见的。您应该将map
作为构造函数参数,而是公开put
和get
方法。例如,这将清除此错误的可能性。
答案 1 :(得分:3)
您确定setMyMap
被调用了吗?如果没有,那么myMap
在使用时将为null
。
如果您希望地图具有“默认”值,则应将其初始化为:
private Map<Object, Date> myMap = new HashMap<Object, Date>();
答案 2 :(得分:0)
private Map<Object, Date> myMap;
因为myMap
指向null
1)您需要在更新mmap之前执行setMyMap
(或)
2)将地图声明更改为
private Map<Object, Date> myMap = new HashMap<Object, Date>();
答案 3 :(得分:0)
在使用setMyMap(newMap)
设置变量之前,变量myMap将为null