WASPADALAH!
Pernyataan dihapus pada saat runtime kecuali Anda secara eksplisit menentukan untuk "mengaktifkan pernyataan" saat mengkompilasi kode Anda. Penegasan Java tidak boleh digunakan pada kode produksi dan harus dibatasi pada metode pribadi (lihat Pengecualian vs Penegasan ), karena metode pribadi diharapkan untuk diketahui dan digunakan hanya oleh pengembang. Juga assert
akan melempar AssertionError yang Error
tidak meluas Exception
, dan yang biasanya menunjukkan Anda memiliki kesalahan yang sangat tidak normal (seperti "OutOfMemoryError" yang sulit untuk dipulihkan, bukan?) Anda tidak diharapkan dapat mengobati.
Hapus bendera "aktifkan pernyataan", dan periksa dengan debugger dan Anda akan melihat bahwa Anda tidak akan menginjak panggilan pemanggilan IllegalArgumentException ... karena kode ini belum dikompilasi (sekali lagi, ketika "ea" dihapus)
Lebih baik menggunakan konstruksi kedua untuk metode publik / dilindungi, dan jika Anda menginginkan sesuatu yang dilakukan dalam satu baris kode, setidaknya ada satu cara yang saya tahu. Saya pribadi menggunakan Spring Framework 's Assert
kelas yang memiliki beberapa metode untuk memeriksa argumen dan melemparkan 'IllegalArgumentException' pada kegagalan. Pada dasarnya, yang Anda lakukan adalah:
Assert.notNull(obj, "object was null");
... Yang sebenarnya akan mengeksekusi kode yang persis sama dengan yang Anda tulis pada contoh kedua. Ada beberapa metode lain yang bermanfaat seperti hasText
, hasLength
di sana.
Saya tidak suka menulis lebih banyak kode daripada yang diperlukan, jadi saya senang ketika saya mengurangi jumlah baris yang ditulis sebanyak 2 (2 baris> 1 baris) :-)
obj.hashCode()
;-)