Soweit ich weiß, gibt der Konstruktor nichts zurück, nicht einmal void,
und auch
%Vor%in einer beliebigen Methode bedeutet, dass void zurückgegeben wird.
so in meinem Programm
%Vor%Ich rufe an
%Vor%die VOID zurückgibt, aber der Konstruktor soll nichts zurückgeben, Das Programm kompiliert einfach gut.
bitte erklären.
return
kann der Konstruktor sofort verlassen werden. Ein Anwendungsfall scheint die Erstellung von halb initialisierten Objekten zu sein.
Man kann argumentieren, ob das eine gute Idee ist. Das Problem IMHO ist, dass die resultierenden Objekte schwer zu bearbeiten sind, da sie keine Invarianten haben, auf die Sie sich verlassen können.
In allen Beispielen, die ich bisher gesehen habe, die return
in einem Konstruktor verwendet haben, war der Code problematisch. Oft waren die Konstruktoren zu groß und enthielten zu viel Geschäftslogik, was es schwierig machte, sie zu testen.
Ein anderes Muster, das ich gesehen habe, implementierte die Steuerlogik im Konstruktor. Wenn eine Umleitung erforderlich war, speicherte der Konstruktor die Umleitung und rief zurück. Abgesehen davon waren diese Konstruktoren auch schwer zu testen, das Hauptproblem war, dass man, wenn man mit einem solchen Objekt arbeiten muss, pessimistisch davon ausgehen muss, dass es nicht vollständig initialisiert ist.
Behalten Sie die Logik der Konstruktoren besser im Auge und streben Sie nach vollständig initialisierten, kleinen Objekten. Dann müssen Sie (wenn überhaupt) selten return
in einem Konstruktor aufrufen.
Methoden, die mit void
return type deklariert wurden, sowie Konstruktoren geben nur nichts zurück. Deshalb können Sie return
statement überhaupt nicht angeben. Der Grund, warum der Rückgabewert void
nicht für Konstruktoren angegeben ist, besteht darin, den Konstruktor von der Methode mit demselben Namen zu unterscheiden:
%Vor%Anweisungen nach return Anweisung wäre nicht erreichbar. Wenn return-Anweisung die letzte ist, dann hat es keinen Sinn, im Konstruktor zu definieren, aber der Compiler reklamiert nicht. Es kompiliert gut.
Wenn Sie eine Initialisierung im Konstruktor auf der Grundlage von if Bedingung ex. durchführen, möchten Sie vielleicht die Datenbankverbindung initialisieren, wenn sie verfügbar ist, und Sie können sie beliebig zurückgeben Daten von der lokalen Festplatte für temporäre Zwecke zu lesen.
In diesem Fall verhält sich return
ähnlich wie break
. Es beendet die Initialisierung. Stellen Sie sich eine Klasse mit int var
vor. Sie übergeben int[] values
und möchten var
auf ein beliebiges positives int
in values
(oder var = 0
anderenfalls) initialisieren. Dann können Sie return
verwenden.
Tags und Links java constructor return