La interfaz com.google.common.base.Function
(de Google Guava) define apply
como:entrada @Nullable en interfaz de la función Google Guava desencadena FindBugs advertencia
@Nullable T apply(@Nullable F input);
El método tiene la siguiente nota javadoc:
@throws NullPointerException if {@code input} is null and this function does not accept null arguments
.
FindBugs se queja de mi implementación de la función:
private static final class Example implements Function<MyBean, String> {
@Override
@Nullable
public String apply(@Nullable MyBean input) {
if (null == input) {
throw new NullPointerException();
}
return input.field;
}
}
con un de alta prioridad advertencia:
NP_PARAMETER_MUST_BE_NONNULL_BUT_MARKED_AS_NULLABLE, Prioridad: Alta
de entrada debe ser no nulo, pero está marcado como nulable
Este parámetro siempre se usa de una manera que requiere que sea no nulo, pero el parámetro se anota explícitamente como anulable. O el uso del parámetro o la anotación es incorrecto.
Mi función no admite null
entradas y se produce una excepción si ese es el caso. Si entiendo correctamente, FindBugs lo trata como un requisito para no nulo.
Para mí, parece una contradicción: la entrada es @Nullable pero el método @throws NullPointerException cuando es nulo. ¿Me estoy perdiendo de algo?
La única manera de deshacerse de la advertencia que puedo ver es la supresión manual. (El código de guayaba está fuera de mi control, obviamente).
¿Quién no sobre el uso de @Nullable annotation, FindBugs, Guava o yo mismo?
Estás diciendo que aceptarás nulo en la firma, y luego estás * rechazando * un valor nulo en el cuerpo. Parece que no entendiste el propósito de '@ Nullable'. –
La única razón por la que agregué '@ Nullable' para el parámetro de entrada es que es lo que define la interfaz' Function'. De todos modos, eliminé la anotación '@ Nullable' del parámetro como se sugirió @Xaerxess, pero FindBugs sigue quejándose. – vitaly