with tutorial notacion define crear annotation java annotations

tutorial - notacion en java



Uso de anotaciones anulables (4)

Vi un método en java declarado como:

void foo(@Nullable Object obj) { ... }

¿Cuál es el significado de @Nullable aquí? ¿Significa que la entrada podría ser null ? Sin la anotación, la entrada todavía puede ser nula, así que supongo que no es solo eso.

Gracias


Deja claro que el método acepta valores nulos y que, si reemplaza el método, también debe aceptar valores nulos.

También sirve como una sugerencia para los analizadores de código como FindBugs . Por ejemplo, si un método de este tipo anula su argumento sin verificar primero el valor nulo, FindBugs emitirá una advertencia.



Esta anotación se usa comúnmente para eliminar NullPointerExceptions . @Nullable se suele decir que este parámetro puede ser null . Un buen ejemplo de tal comportamiento se puede encontrar en Google Guice . En este marco de inyección de dependencia ligero, usted dice que esta dependencia podría ser null . Si intentara pasar null y sin anotación, el marco se negaría a hacer su trabajo.

Además, @Nullable podría usarse con la anotación @NotNull . Aquí puedes find algunos consejos sobre cómo usarlos adecuadamente. La inspección de código en IntelliJ comprueba las anotaciones y ayuda a depurar el código.


Un elemento anotado con @Nullable reclama el valor nulo es perfectamente válido para devolver (para métodos), pasar a (para parámetros) y mantener (para variables locales y campos).

Un elemento anotado con @NotNull reclama que el valor nulo está prohibido devolver (para métodos), pasar a (para parámetros) y mantener (para variables locales y campos).

Existe una relación de covarianza-contravarianza entre @Nullable y @NotNull al anular / implementar métodos con declaración o parámetros anotados.

Anulación / implementación de métodos con una declaración anotada:

  • La anotación @NotNull del método padre requiere la
    @NotNull anotación para el método de clase hijo.
  • Los métodos con la anotación @Nullable en el método principal pueden tener anotaciones @Nullable o @NotNull en el método de clase secundaria.

Anulación / implementación de métodos con parámetros anotados:

  • La anotación @Nullable del parámetro en el método principal requiere la anotación @Nullable para el parámetro del método de clase hijo.
  • Los métodos con la anotación @NotNull del parámetro en el método principal pueden tener anotaciones @Nullable o @NotNull (o ninguna de ellas) para el parámetro del método de clase secundaria.

Ejemplo:

@Nullable public static UserContext getThreadUserContext() { TransactionParms tp = TransactionParms.getBoundParms(); return (tp == null) ? null : tp.getUserContext(); }

Aquí el método getThreadUserContext tiene que devolver una instancia de TransactionParms . Bu esa instancia puede ser Null