In aggiunta alle altre risposte, il @NonNull
(ed è avversario, @Nullable
) annotazione annota un tipo di campo, parametro o metodo di ritorno. IntelliJ e quindi Android Studio possono avvisarti di possibili NullPointerException
s in fase di compilazione.
Un esempio è meglio qui:
@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
}
Queste annotazioni non alterare il comportamento runtime (anche se ho experimented con questo), ma servono come strumento per prevenire i bug.
Si noti che il messaggio che hai ricevuto non era un errore, ma solo un avvertimento, che è sicuro di ignorare, se si sceglie di. L'alternativa è di annotare il parametro tu stesso, come suggerisce Android Studio:
@Override
protected void onSaveInstanceState(@NonNull Bundle outState) {
super.onSaveInstanceState(outState);
}
Importa '@ NotNull'? – chrylis