In einigen unserer Unternehmens-Projekte Code Ich lese oft so etwas wie dieses:Initialisierung eines boolean mit einem Boolean.FALSE/.TRUE - warum?
boolean foo = Boolean.FALSE;
Neben der Tatsache, dass AFAIK ich nur lokale Variablen in Java auf allen (keine Zufallswerte wie in Pascal) und neben der Initialisierung Tatsache, dass ich speziell für Booleans oft eine Initialisierung haben möchte, was vermisse ich hier? Warum nicht:
boolean foo = false;
Ich verstehe es nicht. Und Code-Analyse-Tools wie PMD und Findbugs markieren es auch. Aber warum?
Edit: Ohne wirklich viel über den Bytecode zu wissen, außer dass es dort ist, habe ich eine Beispielklasse erstellt und es dekompiliert. Die Boolean.FALSE ging an:
0: getstatiC#15 // Field java/lang/Boolean.FALSE:Ljava/lang/Boolean;
3: invokevirtual #21 // Method java/lang/Boolean.booleanValue:()Z
6: istore_1
Die ‚falsche‘ Variante ging an:
0: iconst_1
1: istore_1
Also ohne darüber zu viel zu wissen, ich würde vermuten, dass mehr Aussagen mehr Zeit bedeuten, so auszuführen, es ist nicht nur falsch, sondern auf lange Sicht auch langsamer.
Dogmatismus, denke ich. –
Die erste ist einfach nur falsche Verwendung. Obwohl Sie argumentieren könnten, dass jeder mögliche Stil, der Code noch ausführlicher macht, für Java fast idiomatisch ist. –
Dies könnte sicherstellen, dass, wenn sich Boolean (Back-End) jemals ändert, dies sicherstellen wird, dass der Code immer funktioniert ..? Es sieht seltsam aus. – OmniOwl