Java-Aufrufkonstruktor vom Konstruktor

8

Ich habe einen Konstruktor

%Vor%

Wenn ich den zweiten Konstruktor wie folgt anrufe:

%Vor%

Der Compiler sagt mir, dass der Konstruktor die erste Anweisung sein sollte. Also muss ich alle Logik vom zweiten Konstruktor zum ersten kopieren?

    
user1284151 14.10.2012, 08:15
quelle

3 Antworten

21

Warum tust du nicht stattdessen this(a, a+10) ?

Beachten Sie, dass this() oder super() die erste Anweisung in einem Konstruktor sein muss, falls vorhanden. Sie können jedoch immer noch Logik in den Argumenten machen. Wenn Sie komplexe Logik ausführen müssen, können Sie dies tun, indem Sie eine Klassenmethode in einem Argument aufrufen:

%Vor%     
nneonneo 14.10.2012, 08:16
quelle
6

Wenn Sie in Ihrem Konstruktor this() oder super() aufrufen, um den anderen Konstruktor aufzurufen, sollte es immer die erste Anweisung in Ihrem Konstruktor sein.

Deshalb kompiliert der folgende Code nicht: -

%Vor%

Sie können es ändern, um der obigen Regel zu folgen: -

%Vor%     
Rohit Jain 14.10.2012 08:16
quelle
2

Der Aufruf eines anderen Konstruktors muss die erste Zeile im Konstruktor sein.

Sie können expliziten Konstruktoraufruf wie -

aufrufen %Vor%     
Subhrajyoti Majumder 14.10.2012 08:16
quelle

Tags und Links