どのように私はこのケースでは、適切にコンストラクタを呼び出すことができますか?

トム:

私は3種類のクラスを扱う適切にコンストラクタを呼び出すようにしようとしているが、私はそれを行うことができないんだけど

public class B {

private final A a;

public B(A a) {
     this.a = a;
}
private final C c = new C(a);
}

私は「変数aが初期化されていない可能性があります」というエラーを持って、私はBのコンストラクタに二番目の引数を置くと、メインクラスBでそれを呼び出すことによって、それを行う方法を知っているが、他の方法はありますか?

料理:

承知しました。

public class B {

    private final A a;

    public B(A a) {
        this.a = a;
        c = new C(a);
    }
    private final C c;
}

あなたが仕事をしない理由は、宣言の初期化子がコンストラクタの前に実行されているということです。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=236170&siteId=1