1

我正在尝试在可以全局使用的支持 bean 中创建一个可变的 Map 。这是我使用它的方式:

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 是从我正在使用的程序中自动生成的(autogen'd 设置并为其他一切工作)。

当我尝试填充地图时出现错误。它返回一个空指针异常。代码显然已简化,但如果您需要更多信息,我很乐意提供。

我的问题已通过使用以下方法解决:

    private Map<Object, Date> myMap = new HashMap<Object, Date>();

public void myMethod(){
    myMap.put(myObject, myDate);
}

如果有人有更多建议,我会很高兴听到它。

4

4 回答 4

4

我几乎可以肯定你在这里有一个设计缺陷。为map. 您可能应该将 themap作为构造函数参数并改为暴露put和方法。get例如,这将清除此错误的可能性。

于 2013-01-08T21:15:47.777 回答
3

你确定setMyMap会被调用吗?好像它没有,那么myMap它将null在它被使用时。

如果你希望地图有一个“默认”值,你应该像这样初始化它:

private Map<Object, Date> myMap = new HashMap<Object, Date>();
于 2013-01-08T21:14:24.600 回答
0
private Map<Object, Date> myMap;

因为myMap是指向null

1)你需要在更新 mmap 之前做 setMyMap

(或者)

2) 将地图声明更改为

private Map<Object, Date> myMap = new HashMap<Object, Date>();
于 2013-01-08T21:13:57.433 回答
0

在您使用 setMyMap(newMap) 设置之前,变量 myMap 将为空

于 2013-01-08T21:14:44.923 回答