Відповіді:
Під час виконання вашого коду виконання Java виконує наступні дії:
Іншими словами, null може бути передано до Integer без проблем, але нульовий цілий об'єкт не може бути перетворений у значення типу int.
EDIT
У мене було певне питання, пов’язане з тим, що раніше у Stack Overflow дивіться тут .
Java успішно призначає нуль до посилання Integer, на яке немає посилань.
Це нормально, тому що бути непроголошеним - це дійсний стан для довідок.
Це виклик методу неіснуючого об'єкта, який неможливо виконати.
Виконання трансляції (Integer)null
- це те саме, що оголосити змінну Integer, а потім не призначити їй новий (або вже існуючий) екземпляр об'єкта Integer.
Відключити a Integer
в int
ie в int i = new Integer(15);
, i
насправді дорівнює new Integer(15).intValue()
i = (Integer) o
; де Object o = 15
те саме, o = Integer.valueOf(15);
але але i = null
; кидає, NullPointerException
тому що i
тоді дорівнює, null.intValue()
що кидає a NullPointerException
.
valueOf()
фабричні методи, а не створює нові екземпляри для боксу.