| 

.NET C# Java Javascript Exception

2
Ich bin Grad irgendwie verwirrt.
Wir nutzen Annotationen wie @nonull
Eine frage, wenn ich diese nutze, heißt das
"Es sollte niemals null sein"(könnte aber passieren)
ODER
"Es kann niemals null sein" ????????????
20.04.2015
tanzverfuehrung 147 8
1 Antwort
1
Sofern sich deine Frage auf die Java Bean Validation bezieht: Es darf niemals null sein.

Allerdings musst du deinem Compiler sagen, wie er das genau behandeln soll (enable annotation-based null analysis), standardmäßig ist die Option nicht aktiv. Da kannst du auch einstellen ob es eine Compiler-Warnung oder einen Compiler-Fehler (würde ich bevorzugen) geben soll wenn null übergeben wird.

Das ganze funktioniert aber nur, wenn der Compiler entscheiden kann ob null übergeben wird.

Nachtrag:
"The implementor of method capitalize enjoys the guarantee that the argument in shall not be null and thus dereferencing without a null check is OK here." heißt eigentlich, dass du eben nicht auf null prüfen musst, wenn du @NonNull verwendest. Das funktioniert, wenn der Compiler richtig eingestellt ist.

Du kannst dem Compiler auch sagen was er bei "könnte Null zur Laufzeit werden" machen soll indem du für "Unchecked conversion from non-annotated type to @NonNull type" auf Error stellst. Dann stellt der Compiler auch sicher, dass möglicherweise null nicht vorkommen wird.

Also wenn du sicher stellen kannst, das der Compiler immer richtig instruiert wird dann reicht es @NonNull zu verwenden. Im Zweifelsfall muss sich dann halt der Aufrufer deiner Methoden um die null-checks kümmern. Kannst du nicht garantieren, dass der Compiler immer richtig instruiert wird musst du auf null prüfen aber dann kannst du die Annotation eigentlich auch weg lassen.
20.04.2015
phg 1,6k 3
DANKE.aber wenn es @nonnull ist, sollte ich überprüfen, das es wirklich nicht null ist oder?
tanzverfuehrung 21.04.2015
Gern. Hab meine Antwort ergänzt, da der Platz für einen Kommentar etwas zu knapp war.
phg 21.04.2015
Bin eben noch über das Null Object Pattern gestolpert: http://en.wikipedia.org/wiki/Null_Object_pattern#Java so als Ergänzung. Kling für bestimmte Anwendungsfälle auch interessant, werde ich mir demnächst mal in ruhe anschauen und darüber nachdenken. Vielleicht interessiert sich ja noch jemand dafür.
phg 21.04.2015

Stelle deine Null-Frage jetzt!