Odpowiedzi:
Podczas wykonywania kodu środowisko wykonawcze Java wykonuje następujące czynności:
Innymi słowy, wartość null może być bez problemu rzutowana na liczbę całkowitą, ale obiektu o wartości całkowitej null nie można przekonwertować na wartość typu int.
EDYTOWAĆ
Miałem podobne pytanie jakiś czas temu w Stack Overflow, patrz tutaj .
Java pomyślnie przekazuje wartość NULL do odwołania do liczby całkowitej, która nie odwołuje się do żadnego obiektu.
To jest OK, ponieważ bycie niezidentyfikowanym jest poprawnym stanem dla odwołania.
Jest to wywołanie metody nieistniejącego obiektu, której nie można wykonać.
Wykonanie rzutowania (Integer)null
jest takie samo, jak zadeklarowanie zmiennej Integer, a następnie nie przypisanie jej nowej (lub już istniejącej) instancji obiektu Integer.
Rozpakowanie a Integer
na int
ie w int i = new Integer(15);
, i
faktycznie jest równe new Integer(15).intValue()
i = (Integer) o
; gdzie Object o = 15
jest to samo co o = Integer.valueOf(15);
ale i = null
; wyrzuca a, NullPointerException
ponieważ i
równa się, null.intValue()
co wyrzuca a NullPointerException
.
valueOf()
metod fabrycznych zamiast tworzenia nowych instancji dla boksu.