2012-11-23 3 views
1

я получаю NullPointerException в следующем коде:Добавить пустой список на карте

private Map<String,List<Entry>> Days; 
private void intializeDays() { 
    //Iterate over the DayOfWeek enum and put the keys in Map 
    for(DayOfWeek dw : EnumSet.range(DayOfWeek.MONDAY,DayOfWeek.SUNDAY)){ 
    List<Entry> entries = null; 
    Days.put(dw.toString().toLowerCase(),entries); 
    } 
} 

Я думаю, что его из-за

List<Entry> entries = null; 

, но тогда, как создать пустой список и добавить его к карта ?

+0

Проблема с картой дней. Попробуйте это Days = new HashMap >(); – Addict

ответ

4

Вы должны инициализировать карту:

private Map<String,List<Entry>> Days = new HashMap<>(); 

Обратите внимание, что вы можете использовать

List<Entry> entries = new ArrayList <Entry>(); 

и добавить к карте, вместо добавления нуля.

О NullPointerException

Брошенный, когда приложение пытается использовать нуль в случае, когда требуется объект. К ним относятся:

Calling the instance method of a null object. 
Accessing or modifying the field of a null object. 
Taking the length of null as if it were an array. 
Accessing or modifying the slots of null as if it were an array. 
Throwing null as if it were a Throwable value. 
Applications should throw instances of this class to indicate other illegal uses of the null object. 

Поскольку вы не инициализировать вы Карту объекта, когда вы сделали это: «Доступ или изменения поля нулевого объекта»

Days.put(dw.toString().toLowerCase(),entries); 

вы получите NullPointerException, потому что вы.

2
private Map<String,List<Entry>> Days; 

Days неинициализирован. Измените его на

private Map<String,List<Entry>> Days = new HashMap<>(); 

или инициализировать его другим способом.

Как JavaDoc состояний, null ключи и значения разрешены в HashMap

Также обратите внимание, что в вашем коде нет пустого списка, там нет списка вообще.

Смежные вопросы