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?
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:
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%Der Aufruf eines anderen Konstruktors muss die erste Zeile im Konstruktor sein.
Sie können expliziten Konstruktoraufruf wie -
aufrufen %Vor%Tags und Links java constructor