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)nulljest takie samo, jak zadeklarowanie zmiennej Integer, a następnie nie przypisanie jej nowej (lub już istniejącej) instancji obiektu Integer.
Rozpakowanie a Integerna intie w int i = new Integer(15);, ifaktycznie jest równe new Integer(15).intValue() i = (Integer) o; gdzie Object o = 15jest to samo co o = Integer.valueOf(15);ale i = null; wyrzuca a, NullPointerExceptionponieważ irówna się, null.intValue()co wyrzuca a NullPointerException.
valueOf()metod fabrycznych zamiast tworzenia nowych instancji dla boksu.