Вам все еще нужно инициализировать его, как
private static HashMap<String, Integer> name_list = new HashMap<String, Integer>();
Когда вы оставляете поле объекта уровня класса без инициализации - или любой ссылки на объект, в этом отношении, по умолчанию оно имеет значение null.
Хотя вам может показаться очевидным, что вы хотите HashMap, поэтому он должен просто неявно инициализировать его, но Java не знает, хотите ли вы на самом деле HashMap или, возможно, подкласс HashMap, например LinkedHashMap
Примитивы уровня класса , например int
, могут быть оставлены как private static int someNumber;
и не будут вызывать исключение NullPointerException при обращении к нему - но это потому, что примитивы не могут быть нулевыми. Java назначит ему некоторое значение по умолчанию (в случае int
, 0).