Rückgabe boolean / Boolean?

Hi,

bin gerade über ein Thema gestolpert…
Ich habe ein Interface/Klasse mit einer Methode die als Rückgabe einen Bool’schen Wert zurück gibt…jetzt die Frage:

Boolean wasAuchImmerDieMacht(xyz...);
oder besser:
boolean wasAuchImmerDieMacht(xyz...);

Gruß
Karl Heinz Marbaise

Garkeine Frage:
boolean wasAuchImmerDieMacht(xyz...);

Boolean (also groß) ist eine Wrapperklasse für den nativen Datentyp boolean.
Wenn jemand ein Boolean benötigt dann soll er sich den Rückgabewert selber wrappen, warum zusätzlich Arbeit ausführen lassen wenn sie wahrscheinlich garnicht benötigt wird?

Autoboxing-/unboxing dürfte bei Boolean nicht so tragisch sein, wie bei anderen Wrapper-Typen. Dennoch würde ich die primitive Variante vorziehen. Einzig im Umfeld von bspw. JPA würde ich es mit Wrappern machen, weil die im Gegensatz zu primitives nullable sind. Also Wrapper nur, wenn evtl null möglich sein soll.

Auch im Zusammenhang mit funktionaler Programmierung finde ich die Primitiv-Variante besser. Dann entspricht die Signatur Deiner Methode einem Predicate (Stichwort Methodenreferenz). Das trifft den “Zweck” der Methode meist eher als eine Function.

Die Wrapper haben auch den Nachteil, dass plötzlich null möglich ist, manchmal ist das ein Vorteil, aber wenn die Wahrheit entweder true oder false sein muss…

Wenn du kein null willst/brauchst, würde ich boolean vorschlagen.

Sehe ich auch so. Boolean hat 3 Zustände und boolean 2. That’s it.

Siehe auch Alex Ruiz’s Weblog

Hi,

passt aber nicht wirklich, da ich hier von Rückgabewerte sprach und nicht von Bool’schen Parametern…

Gruß
Karl Heinz Marbaise

was heißt hier ‚Hi‘ wie ein neuer Gesprächsteilnehmer? :wink:

allein 4 weitere Antworten vor diesem Link kommentarlos hinzunehmen und dann die 5. Antwort etwas zu bemäkeln,
das liest sich in meinen Augen frech…

Wie schon geschrieben wurde ist die Frage, was die Antwort enthalten soll (und nicht die Parameter)
Gibt es nur die Antwortmöglichkeiten (Rückgabe true/false) würde ich wie auch von den anderen geschrieben den boolean vorziehen, da dieser nur genau diese Antworten hat. Wenn jedoch auch null zurück gegeben werden kann (was ein bisschen komisch ist) dann muss es Boolean sein. Wenn das null jedoch nur benutzt wird um ein Fehlverhalten zu Symbolisieren, würde ich eher eine Exceptione (Aunsnahme/Fehlerfall) werfen und der Aufrufer der Funktion muss sich dann darum kümmern wie er damit umgeht. Eine weitere Möglichkeit um mehr als 2 Zustände zu haben wäre noch die Verwendung eines Enums. So z.B.
möchte ich mit einer Funktion abfragen wie der download zustand ist, gibt es den Zustand fertig geladen, läd noch und es ist ein Fehler aufgetreten, das könnte ich nun als Boolean isLoading () machen [true=läd, false=fertig geladen,null=fehler], oder mit dem Enum State getLoadingState() was für den Anwender der Funktion einfacher zu verstehen ist.

@CyborgBeta :
Warum schreibst du Dinge, die bereits ausreichend erläutert wurden?
Posting Counter erhöhen?

boolean ist schon die richtige Lösung. Wrapper haben den Vorteil, weniger Speicher zu verbrauchen.

Inwiefern benötigt ein großer Boolean weniger Speicher?

boolean ist ein primitiver Datentyp. Boolean eine Klasse, die ein Objekt benötigt. Oder nicht? Man kläre mich auf, bin kein Profi.

[QUOTE=Jango] @CyborgBeta :
Warum schreibst du Dinge, die bereits ausreichend erläutert wurden?
Posting Counter erhöhen?[/QUOTE]

Bitte keine Verwechslung zwischen @CyborgGamma und @CyborgBeta (mir). MMn. gehört CyborgGamma gesperrt, aber das lasse ich mal stecken.

Es wurde bereits alles gesagt, nur noch nicht von jedem. Ich halte mich vornehm zurück, wenn Sie gestatten, Jango.

Oh, Verwechslung. Ich dachte, ihr beide teilt euch das…

Nein, ich wurde „namentlich nachgemacht“ und bin deshalb angepisst. Aber egal, name dropping. Hinter Gamma verbirgt sich eine ganz andere Person, welche; das wissen wir nicht.

Na dann - nichts für ungut.
Nachgemacht? Man kann dich nicht nachmachen. Du bist du (einzigartig), wie konnte ich das verwechseln. :stuck_out_tongue:

[QUOTE=Jango]Na dann - nichts für ungut.
Nachgemacht? Man kann dich nicht nachmachen. Du bist du (einzigartig), wie konnte ich das verwechseln. :P[/QUOTE]

Das ist doch Ironie. Jetzt bin ich auf dem neusten Stand.

Zwischen dem Rückgabetyp Boolean und (formalen) Parametertyp Boolean gibt’s - außer den “Erstellungszeitpunkt” -, keinen Unterschied. Es gibt 3 Zustände, wahr, falsch und “Fehler”; braucht man nur 2, dann sollte man boolean wählen. Boolean und boolean sind ja auch gut miteinander “verträglich”.

Nein, es gibt true, false und null. Null impliziert nicht automatisch einen Fehler.

Repräsentiert. Deshalb steht das ja auch in Gänsefüßchen. :wink:

kama wird schon wissen, was gemeint ist.

Null repräsentiert auch keinen Fehler. Wenn kama so eine einfache Frage hat, warum sollte er das dann wissen? Bitte verteile doch nicht falsches Wissen.