HashMap作为java中的静态成员

V1r*_*a1y 3 java hashmap static-members

我希望将HashMap作为新类的每个实例的静态成员.然而,每当我尝试.get或输入我的HashMap时,我都会得到一个NullPointerException.救命!?

我正在做:public class EmailAccount { private static HashMap<String,Integer> name_list;然后name_list.put(last_name, occurences);Even name_list.containsKey(last_name);返回NullPointer.

这来自于之前的一个问题:计算Java中字符串的出现次数

Bal*_*usC 9

你需要实例化它.

private static Map<String, Integer> name_list = new HashMap<String, Integer>();
Run Code Online (Sandbox Code Playgroud)

也可以看看:


请注意,在地图的变量名称中使用"list"会让人感到困惑.你不想要它是一个name_map或name_occurences?顺便提一下,这种下划线也不适合Java命名约定,但除此之外.


Zac*_*h L 5

你还需要初始化它,比如

private static HashMap<String, Integer> name_list = new HashMap<String, Integer>();
Run Code Online (Sandbox Code Playgroud)

当您保留没有初始化的类级别对象字段 - 或任何对象引用时,它默认为null.

虽然你想要一个HashMap似乎很明显,所以它应该只是隐式初始化它,Java不知道你是否想要一个HashMap,或者一个HashMap子类,比如LinkedHashMap

类级基元,就像int可以保持一样,private static int someNumber;并且不会通过访问它来抛出NullPointerException - 但这是因为基元不能为空.Java将为其分配一些默认值(在int情况下为0).