Saya mendapat banyak panggilan berikut:
(ListView) getView().findViewById(R.id.main_list_view);
(TextView) getView().findViewById(R.id.items_no);
....
dan AndroidStudio memberi tahu saya bahwa mereka mungkin menghasilkan NullPointerException
:
Pemanggilan metode
getView().findViewById(R.id.main_list_view)
mungkin menghasilkanjava.lang.NullPointerException
lebih sedikit... (Ctrl+F1)Inspeksi ini menganalisis kontrol metode dan aliran data untuk melaporkan kemungkinan kondisi yang selalu benar atau salah, ekspresi yang nilainya terbukti konstan secara statis, dan situasi yang dapat menyebabkan pelanggaran kontrak nullability.
Variabel, parameter metode, dan nilai kembalian yang ditandai sebagai
@Nullable
atau@NotNull
diperlakukan sebagai nullable (atau bukan-null) dan digunakan selama analisis untuk memeriksa kontrak nullability, misalnya kontrak nullability. laporkan kemungkinanNullPointerException
kesalahan.Kontrak yang lebih kompleks dapat ditentukan menggunakan anotasi
@Contract
, misalnya:
@Contract("_, null -> null")
— metode mengembalikan null jika argumen kedua adalah null@Contract("_, null -> null; _, !null -> !null")
— metode mengembalikan null jika argumen kedua adalah null dan bukan-null sebaliknya
@Contract("true -> fail")
— metodeassertFalse
tipikal yang memunculkan pengecualian jika nilai true diteruskan ke metode tersebutInspeksi dapat dikonfigurasi untuk menggunakan anotasi
@Nullable
@NotNull
khusus (secara default, anotasi dari annotations.jar akan digunakan)
Untungnya semuanya berfungsi, tetapi apakah ada perbaikan pada kode yang dapat saya lakukan?