java intellij-idea code-inspection

java - Advertencia de inspección poco clara "NullableProblems" en IntelliJ



intellij-idea code-inspection (3)

¿Por qué estoy recibiendo una advertencia de la inspección de "NullableProblems" en IntelliJ sobre esto?

public class Test implements Comparable<Test> { @Override public int compareTo(Test o) { return 0; } }

Estoy usando IntelliJ 14.1.4 y compilando con Java 1.7

Captura de pantalla:

Agregar @NotNull antes del argumento no ayuda:


Es porque está anulando un método que no tiene una anotación @NotNull .

IntelliJ IDEA le advierte si el método principal no tiene una anotación @NotNull .


Esto se puede configurar globalmente en IntelliJ IDEA fácilmente y para mí personalmente es la forma recomendada. Si lo deseas, puedes agregar tus propias anotaciones.
es decir, javax.validation.constraints.NotNull

Camino a la configuración:
Settings > Editor > Inspections > @NotNull/@Nullable problems > Configure annotations

Algunas capturas de pantalla:


De Comparable.compareTo A:

@throws NullPointerException if the specified object is null

Entonces IntelliJ sabe que el objeto no debe ser null y agrega una anotación @NotNull automáticamente :

IntelliJ IDEA examinará minuciosamente el bytecode de SDK y bibliotecas e inferirá estas anotaciones automáticamente para que luego se puedan usar para analizar el código fuente y detectar lugares donde se pasó por alto null.

Su método reemplazado no incluye esta anotación, por lo que anula este comportamiento, lo que hace que el parámetro sea nulable, contra el contrato de la interfaz Comparable .

Puede resolver esto agregando @NotNull antes del parámetro.

También puede desactivar esta inspección presionando Alt + Enter , seleccionando la advertencia en el menú emergente y seleccionando Disable inspection en el submenú.

Consulte la Ayuda Web y este hilo para obtener más información sobre las anotaciones @NotNull / @NonNull .