Además de las otras respuestas, la anotación @NonNull
(y su oponente @Nullable
) anota un tipo de retorno de campo, parámetro o método. IntelliJ y, por lo tanto, Android Studio pueden advertirle sobre posibles NullPointerException
correos electrónicos en tiempo de compilación.
Un ejemplo es mejor aquí:
@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
}
Estas anotaciones no alteran el comportamiento en tiempo de ejecución (aunque he experimentado con esto), pero sirven como una herramienta para prevenir errores.
Tenga en cuenta que el mensaje que recibió no fue un error, sino solo una advertencia, que es seguro ignorar, si así lo desea. La alternativa es anotar el parámetro usted mismo también, como sugiere Android Studio:
@Override
protected void onSaveInstanceState(@NonNull Bundle outState) {
super.onSaveInstanceState(outState);
}