Wie können @Nullable- und @Nonnull-Annotationen effektiver verwendet werden?

Kann ich sehen, dass @Nullable und @Nonnull Anmerkungen könnte hilfreich sein bei der Verhinderung NullPointerExceptions aber nicht sehr weit verbreiten.

  • Die Wirksamkeit dieser Anmerkungen drop-off vollständig nach eine Ebene der Dereferenzierung, so dass, wenn Sie nur fügen Sie ein paar Sie nicht vermehrt sehr weit.
  • Da diese Anmerkungen sind nicht gut durchgesetzt, besteht die Gefahr, vorausgesetzt, ein Wert markiert mit @Nonnull ist nicht null und daher nicht der Durchführung der null-Kontrollen.

Den code unten bewirkt, dass ein parameter markiert mit @Nonnull zu null werden, ohne dass irgendwelche Beschwerden. Es wirft ein NullPointerException wenn es ausgeführt wird.

public class Clazz {
    public static void main(String[] args){
        Clazz clazz = new Clazz();

        //this line raises a complaint with the IDE (IntelliJ 11)
        clazz.directPathToA(null);

        //this line does not
        clazz.indirectPathToA(null); 
    }

    public void indirectPathToA(Integer y){
        directPathToA(y);
    }

    public void directPathToA(@Nonnull Integer x){
        x.toString(); //do stuff to x        
    }
}

Gibt es einen Weg, um diese Anmerkungen mehr strikt durchgesetzt werden, und/oder weiter verbreiten?

InformationsquelleAutor der Frage Mike Rylander | 2012-11-20

Schreibe einen Kommentar