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)nulldem Deklarieren einer Ganzzahlvariablen und dem anschließenden Zuweisen einer neuen (oder bereits vorhandenen) Ganzzahlobjektinstanz.
A Integerin ein intie in auspacken int i = new Integer(15);, ist ieigentlich gleich new Integer(15).intValue() i = (Integer) o; wo Object o = 15ist das selbe wie o = Integer.valueOf(15);aber i = null; wirft ein NullPointerExceptionweil idann gleich null.intValue()was wirft ein NullPointerException.
valueOf()Factory-Methoden verwendet, anstatt neue Instanzen für das Boxen zu erstellen.