Di Jawa:
int count = (Integer) null;
melempar java.lang.NullPointerException.
Mengapa ini tidak membuang Pengecualian Kelas untuk memudahkan pemahaman programmer?
Mengapa pengecualian ini dipilih daripada pengecualian lainnya?
sumber
Di Jawa:
int count = (Integer) null;
melempar java.lang.NullPointerException.
Mengapa ini tidak membuang Pengecualian Kelas untuk memudahkan pemahaman programmer?
Mengapa pengecualian ini dipilih daripada pengecualian lainnya?
Saat menjalankan kode Anda, Java runtime melakukan hal berikut:
Dengan kata lain, null dapat dilemparkan ke Integer tanpa masalah, tetapi objek integer nol tidak dapat dikonversi ke nilai tipe int.
EDIT
Saya punya pertanyaan terkait beberapa waktu lalu di Stack Overflow, lihat di sini .
Java berhasil memberikan null ke referensi Integer yang tidak merujuk objek.
Tidak apa-apa karena tidak dibuktikan kebenarannya adalah keadaan untuk referensi.
Itu adalah panggilan metode metode objek yang tidak ada yang tidak dapat dilakukan.
Melakukan pemeran (Integer)null
sama dengan mendeklarasikan variabel Integer dan kemudian gagal menetapkannya objek instance integer baru (atau yang sudah ada).
Untuk membuka kotak a Integer
ke dalam int
yaitu int i = new Integer(15);
, i
sebenarnya sama dengan new Integer(15).intValue()
i = (Integer) o
; di mana Object o = 15
sama dengan o = Integer.valueOf(15);
tetapi i = null
; melempar NullPointerException
karena i
kemudian sama dengan null.intValue()
melempar NullPointerException
.
valueOf()
metode pabrik daripada membuat contoh baru untuk tinju.