He visto algún método en java declarado como
void foo(@Nullable Object obj)
{ ... }
¿Qué significa aquí @Nullable
? ¿Significa que la entrada puede ser null
?
Sin la anotación, la entrada todavía puede ser nula, así que supongo que no es sólo eso?
Deja claro que el método acepta valores nulos, y que si anula el método, también debe aceptar valores nulos.
También sirve como una pista para los analizadores de código como FindBugs. Por ejemplo, si un método de este tipo hace referencia a su argumento sin comprobar primero si es nulo, FindBugs emitirá una advertencia.
Esta anotación se utiliza habitualmente para eliminar las NullPointerExceptions
. La anotación @Nullable
suele decir que este parámetro puede ser null
. Un buen ejemplo de este comportamiento se puede encontrar en Google Guice. En este marco de inyección de dependencia ligera se dice que esta dependencia puede ser "nula". Si se intenta pasar null
y sin anotación el framework se negaría a hacer su trabajo.
Además, @Nullable
puede ser utilizado con la anotación @NotNull
. Aquí puedes encontrar algunos consejos sobre cómo usarlas correctamente. La inspección de código en IntelliJ comprueba las anotaciones y ayuda a depurar el código.
Diferentes herramientas pueden interpretar el significado de @Nullable
de forma diferente. Por ejemplo, el Checker Framework y FindBugs manejan @Nullable
de forma diferente.