Selain jawaban lain @NonNull
, @Nullable
anotasi (dan lawannya, ) menganotasi bidang, parameter, atau jenis kembalian metode. IntelliJ dan Android Studio bisa memperingatkan Anda tentang kemungkinan NullPointerException
waktu kompilasi.
Contoh yang terbaik di sini:
@NonNull private String myString = "Hello";
@Nullable private String myOtherString = null;
@NonNull
public Object doStuff() {
System.out.println(myString.length); // No warning
System.out.println(doSomething(myString).length); // Warning, the result might be null.
doSomething(myOtherString); // Warning, myOtherString might be null.
return myOtherString; // Warning, myOtherString might be null.
}
@Nullable
private String doSomething(@NonNull String a) {
return a.length > 1 ? null : a; // No warning
}
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:
@Override
protected void onSaveInstanceState(@NonNull Bundle outState) {
super.onSaveInstanceState(outState);
}