Uso de la anotación @Nullable

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?

Solución

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.

Comentarios (1)

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.

Comentarios (0)

Diferentes herramientas pueden interpretar el significado de @Nullable de forma diferente. Por ejemplo, el Checker Framework y FindBugs manejan @Nullable de forma diferente.

Comentarios (0)