Warum ich Null-Zeiger-Ausnahme in diesem Code erhalten?
-
28-09-2019 - |
Frage
public class Test {
Integer i;
int j;
public static void main ( String [] args ) {
Test t = new Test ();
t.go();
}
public void go() {
j=i;
System.out.println(j);
System.out.println(i);
}
}
Ausgang: Exception in thread "main" java.lang.NullPointerException bei Test.go (Test.java:12) bei Test.main (Test.java:8)
Lösung
Das ist natürlich nicht der Fehler. Sie erhalten einen Laufzeitnullpointer bekommen, weil Sie eine Nullreferenz (i
) in eine primitive (j
) sind Unboxing. Siehe JLS §5.1.8 .
Der Grund i
ist null ist, dass Instanzfelder initialisiert werden auf 0, null oder falsch standardmäßig aktiviert.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow