Es una anotación, pero el nombre correcto es NonNull
:
protected void onSaveInstanceState(@NonNull Bundle outState)
(Y también)
import android.support.annotation.NonNull;
El propósito es permitir que el compilador advierta cuando se están violando ciertos supuestos (como un parámetro de un método que siempre debe tener un valor, como en este caso particular, aunque hay otros). De la documentación de Anotaciones de soporte :
La @NonNull
anotación se puede utilizar para indicar que un parámetro determinado no puede ser nulo.
Si se sabe que una variable local es nula (por ejemplo, porque algún código anterior verificó si era nula), y lo pasa como parámetro a un método donde ese parámetro está marcado como @NonNull, el IDE le advertirá que tiene un posible accidente.
Son herramientas de análisis estático. El comportamiento en tiempo de ejecución no se modifica en absoluto.
En este caso, la advertencia particular es que el método original que está anulando (en Activity
) tiene una @NonNull
anotación en el outState
parámetro, pero no lo incluyó en el método de anulación. Solo agregarlo debería solucionar el problema, es decir
@Override
protected void onSaveInstanceState(@NonNull Bundle outState) {
super.onSaveInstanceState(outState);
}
NotNull
/NonNull
. Respuesta ajustada en consecuencia.Recientemente, se agregaron varias anotaciones de soporte útiles en la biblioteca de soporte de Android. Su función principal es anotar las propiedades de varios métodos y parámetros para ayudar a detectar errores. Por ejemplo, si pasa un
null
valor a un parámetro que está marcado con laNotNull
anotación, recibirá una advertencia.Las anotaciones se pueden agregar a su proyecto con Gradle agregando la siguiente dependencia:
Recibirá la advertencia porque el
Bundle
parámetro está marcado con la@NotNull
anotación y, al anular el método, la anotación se oculta. Lo correcto es agregar la anotación al parámetro del método anulado también.fuente
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 posiblesNullPointerException
correos electrónicos en tiempo de compilación.Un ejemplo es mejor aquí:
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:
fuente