0

パラメータを受け取る現在のオブジェクトのメソッドがあります。メソッドを呼び出すと、定義上NullPointerExceptionは。であってはなりませんが、がスローされます。this null

private String doSomething(int i){
   return "I";
}

呼び出し:

Integer i = null;
String s = this.doSomething(i);

オブジェクトNullPointerExceptionを参照していないのになぜですか?null

4

2 に答える 2

5

この場合、NullPointerExceptionをに変換できないため、JVM内部はをスローInteger iint iます。この場合、Integerisはnull、もちろんプリミティブデータ型 intには無効です。

これは、仕様に従って許可された変換ではなく、Java1.5のガイドに記載されています。

于 2012-08-17T23:36:49.173 に答える
1

JVMはnullをintにオートボックス化しようとし、NPEで失敗しました。

于 2012-08-17T23:39:44.903 に答える