クラスのコンストラクターが次のようになっているJavaコードを見ています。
public class X extends ... {
X(String s) {
super(new Y(s));
}
}
それはいつも間違っていますか?言い換えれば、コンストラクターでオブジェクトを作成して、それを「スーパー」に渡すのは常に間違っているのでしょうか。もしそうなら、なぜですか?
編集:なぜ私はそれが間違っていると思うのですか?
クラスXを作成するとき、jvmが最初に行うことは、そのスーパークラスでsuperを呼び出すことです。(「super()」が暗黙指定されている場合でも実行されます)super(new Y(s));
三項演算子を使用したsuperの呼び出しなど、限られた量の操作しか実行できませsuper( s != null ? new Y(s) : new Y() )
んが、superを最初に呼び出す必要があるため、これ以上ロジックを配置することはできません。 !!! だから私はそれが間違っていると思います