Відповіді:
Під час виконання вашого коду виконання Java виконує наступні дії:
Іншими словами, null може бути передано до Integer без проблем, але нульовий цілий об'єкт не може бути перетворений у значення типу int.
EDIT
У мене було певне питання, пов’язане з тим, що раніше у Stack Overflow дивіться тут .
Java успішно призначає нуль до посилання Integer, на яке немає посилань.
Це нормально, тому що бути непроголошеним - це дійсний стан для довідок.
Це виклик методу неіснуючого об'єкта, який неможливо виконати.
Виконання трансляції (Integer)null- це те саме, що оголосити змінну Integer, а потім не призначити їй новий (або вже існуючий) екземпляр об'єкта Integer.
Відключити a Integerв intie в 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()фабричні методи, а не створює нові екземпляри для боксу.