web-dev-qa-db-fra.com

Avertissement d'inspection "NullableProblems" imprécis dans IntelliJ

Pourquoi est-ce que j'obtiens un avertissement de l'inspection "NullableProblems" dans IntelliJ à ce sujet:

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

J'utilise IntelliJ 14.1.4 et je compile avec Java 1.7

Capture d'écran:

enter image description here

Ajouter @NotNull avant l'argument n'aide pas:

enter image description here

30
traveh

De Comparable.compareTo:

@throws NullPointerException if the specified object is null

IntelliJ sait donc que l'objet ne doit pas être null et ajoute un @NotNull annotation automatiquement :

IntelliJ IDEA examinera attentivement le SDK et le bytecode des bibliothèques et déduira automatiquement ces annotations afin qu'elles puissent plus tard être utilisées pour analyser le code source pour repérer les endroits où vous avez ignoré null.

Votre méthode surchargée n'inclut pas cette annotation, donc elle remplace ce comportement rendant le paramètre nullable - par rapport au contrat de l'interface Comparable .

Vous pouvez résoudre ce problème en ajoutant @NotNull avant le paramètre.

Vous pouvez également désactiver cette inspection en appuyant sur Alt + Enter, en sélectionnant l'avertissement dans le menu contextuel et en sélectionnant Disable inspection dans le sous-menu.

Consultez Aide Web et ce fil pour plus d'informations sur @NotNull/@NonNull annotations.

23
Darek Kay

Cela peut être configuré globalement dans IntelliJ IDEA facilement et pour moi personnellement est la façon recommandée. Si vous le souhaitez, vous pouvez ajouter vos propres annotations.
c'est à dire. javax.validation.constraints.NotNull

Chemin d'accès au paramètre:
Settings > Editor > Inspections > @NotNull/@Nullable problems > Configure annotations

Quelques captures d'écran: enter image description hereenter image description here

12
magiccrafter