Ich schreibe den Konstruktor für meine "Haupt" -Klasse. Das erste, was es tut, ist eine Methode aufzurufen, Commons-CLI zu verwenden, um die Befehlszeile zu analysieren. Wenn die Methode parseOptions
false zurückgibt, ist ein Fehler aufgetreten und der Konstruktor sollte beendet werden.Vorzeitige Rückkehr von einem Scala-Konstruktor
versuchte ich
if (!parseOptions(args)) return
den folgenden Code schreiben, aber der Compiler beschwert sich, dass ich eine „Return-Anweisung außerhalb Methodendefinition“ haben.
Kurz von System.exit(1)
oder Umkehren der boolean Aufruf (und der ganze Rest meiner Logik innerhalb der if
Anweisung setzen, ist es eine Möglichkeit, zurückzukehren „früh“ von einem Konstruktor?
Ich glaube, ich das haben könnte parseOptions
Methode ein IllegalArgumentException
werfen und dieses Objekt in meinem Main
fangen.
Dank.
Während ich mit den anderen Antworten bestätigen, dass kein Konstruktor sollte in der Regel zurück, wenn es nicht in der Lage war, Um die Instanz in einen Zustand zu versetzen, der die Invarianten ihrer Klasse erfüllt, frage ich mich, warum Sie der Verwendung von "if" abgeneigt sind? –
Wenn ich mehrere Bedingungen habe, die alle zu einer frühen Rückkehr führen können, werde ich mit einer "if" -Kaskade viele Ebenen tief enden. – Ralph
Also? Wenn das die Logik Ihres Konstruktors ist, ist das die Logik Ihres Konstruktors. Es wird auch generell empfohlen, keine komplexe Logik in Ihren Konstruktoren zu haben. Im Idealfall "notieren" sie einfach die Werte, die den Zustand/Wert der Instanz umfassen. –