Antworten:
Bei der Ausführung Ihres Codes führt die Java-Laufzeit die folgenden Aktionen aus:
Mit anderen Worten, null kann problemlos in Integer umgewandelt werden, aber ein null-Integer-Objekt kann nicht in einen Wert vom Typ int konvertiert werden.
BEARBEITEN
Ich hatte vor einiger Zeit eine ähnliche Frage bei Stack Overflow, siehe hier .
Java wandelt erfolgreich null in eine Ganzzahlreferenz um, die auf kein Objekt verweist.
Das ist in Ordnung, weil es ein gültiger Status für eine Referenz ist, wenn man nicht auf Distanz ist.
Es ist der Aufruf einer Methode eines nicht existierenden Objekts, die nicht ausgeführt werden kann.
Das Durchführen der Umwandlung entspricht (Integer)null
dem Deklarieren einer Ganzzahlvariablen und dem anschließenden Zuweisen einer neuen (oder bereits vorhandenen) Ganzzahlobjektinstanz.
A Integer
in ein int
ie in auspacken int i = new Integer(15);
, ist i
eigentlich gleich new Integer(15).intValue()
i = (Integer) o
; wo Object o = 15
ist das selbe wie o = Integer.valueOf(15);
aber i = null
; wirft ein NullPointerException
weil i
dann gleich null.intValue()
was wirft ein NullPointerException
.
valueOf()
Factory-Methoden verwendet, anstatt neue Instanzen für das Boxen zu erstellen.