with - override annotation java




Uso de anotaciones anulables (3)

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.

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



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





annotations