2

次のコードで 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;

しかし、空のリストを作成してマップに追加するにはどうすればよいですか?

4

2 に答える 2

5

マップを初期化する必要があります。

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

使用できることに注意してください

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

null を追加する代わりに、マップに追加します。

NullPointerExceptionについて

オブジェクトが必要な場合に、アプリケーションが null を使用しようとするとスローされます。これらには以下が含まれます:

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.

これを行ったときに Map オブジェクトを初期化しなかったため、次のようになります。

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

「null オブジェクトのフィールドにアクセスまたは変更している」ため、NullPointerException が発生します。

于 2012-11-23T18:35:44.850 に答える
3
private Map<String,List<Entry>> Days;

Days初期化されていません。に変更します

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

または別の方法で初期化します。

JavaDocが述べているように、キーnullと値はHashMap

また、コードには空のリストがなく、リストがまったくないことにも注意してください。

于 2012-11-23T18:37:11.717 に答える