java - 在 Java 中构建 Map 的正确方法?

标签 java dictionary constructor setter getter

我正在尝试在可全局使用的支持 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 是从我正在使用的程序自动生成的(autogen'd sets and gets work for everything else)。

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

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

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

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

如果有人有更多建议,我将非常乐意听到。

最佳答案

我几乎可以肯定您这里存在设计缺陷。很少为 map 提供 getter 和 setter。您可能应该将 map 作为构造函数参数并公开 putget 方法。例如,这将清除此错误的可能性。

关于java - 在 Java 中构建 Map 的正确方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14224126/

相关文章:

c++ - 当使用 bool 值构造字符串对象时,发生了什么类型转换?

javascript - HtmlUnit - 无法调用未定义的方法 "replace"

python - 嵌套字典 python

Java抽象类TransformerFactory可以实例化吗?

ios - 类型不匹配(Swift.Dictionary<Swift.String, Any> debugDescription : "Expected to decode Dictionary<String, Any> but found an array instead."

javascript - 如何将字典中的嵌套值更改为上层键

Java继承,使用super()

javascript - 获取实例化构造函数的调用对象?

java - Android createChooser出现在Activity前面

java - 为什么当我使用 HttpClient 时,分块流会意外结束?