Itu anotasi, tapi nama yang benar adalah NonNull
:
protected void onSaveInstanceState(@NonNull Bundle outState)
(Dan juga)
import android.support.annotation.NonNull;
Tujuannya adalah untuk memungkinkan kompilator memberi peringatan ketika asumsi tertentu dilanggar (seperti parameter metode yang harus selalu memiliki nilai, seperti dalam kasus khusus ini, meskipun ada yang lain). Dari dokumentasi Anotasi Dukungan :
The @NonNull
anotasi dapat digunakan untuk menunjukkan bahwa parameter yang diberikan tidak dapat null.
Jika variabel lokal diketahui null (misalnya karena beberapa kode sebelumnya memeriksa apakah itu null), dan Anda meneruskannya sebagai parameter ke metode di mana parameter itu ditandai sebagai @NonNull, IDE akan memperingatkan Anda bahwa Anda telah potensi kecelakaan.
Mereka adalah alat untuk analisis statis. Perilaku runtime tidak diubah sama sekali.
Dalam kasus ini, peringatan khususnya adalah bahwa metode asli yang Anda timpa Activity
memiliki @NonNull
anotasi pada outState
parameter, tetapi Anda tidak memasukkannya ke dalam metode penggantian. Hanya menambahkannya akan memperbaiki masalah, yaitu
@Override
protected void onSaveInstanceState(@NonNull Bundle outState) {
super.onSaveInstanceState(outState);
}
NotNull
/NonNull
perbedaan. Jawaban yang disesuaikan.Sejumlah anotasi dukungan yang berguna baru-baru ini ditambahkan di pustaka dukungan Android. Peran utama mereka adalah memberi anotasi pada properti berbagai metode dan parameter untuk membantu menangkap bug. Misalnya, jika Anda meneruskan
null
nilai ke parameter yang ditandai denganNotNull
anotasi, Anda akan mendapatkan peringatan.Anotasi dapat ditambahkan ke proyek Anda dengan Gradle dengan menambahkan dependensi berikut:
Anda mendapatkan peringatan karena
Bundle
parameter ditandai dengan@NotNull
anotasi dan dengan mengganti metode anotasi disembunyikan. Hal yang benar untuk dilakukan adalah menambahkan anotasi ke parameter metode yang diganti juga.sumber
Selain jawaban lain
@NonNull
,@Nullable
anotasi (dan lawannya, ) menganotasi bidang, parameter, atau jenis kembalian metode. IntelliJ dan Android Studio bisa memperingatkan Anda tentang kemungkinanNullPointerException
waktu kompilasi.Contoh yang terbaik di sini:
Anotasi ini tidak mengubah perilaku runtime (meskipun saya telah bereksperimen dengan ini), tetapi berfungsi sebagai alat untuk mencegah bug.
Perhatikan bahwa pesan yang Anda terima bukanlah sebuah kesalahan, tetapi hanya sebuah peringatan, yang aman untuk diabaikan, jika Anda mau. Alternatifnya adalah dengan membuat anotasi sendiri pada parameter, seperti yang disarankan Android Studio:
sumber