クラスの注入コンストラクタでは、適切なパラメータでスーパーコンストラクタを呼び出す必要があります。 superは多態性によって子クラスのメソッドを呼び出す必要があります(同じメソッドを実装する同じ親クラスから複数のサブクラスがあります)。 問題は、子クラスのメソッドは、すでにメンバ変数が注入されていることに依存するということです。私の場合のサブクラスは、さまざまな型の複数の変数に依存しています。 さらに、親クラスは、私が変更できないライブラリのネイティブクラスです。それを手動で初期化する以外に継承されたメソッドを呼び出す前に、メンバ変数を注入する方法はあり注入コンストラクタの前にメンバ変数を挿入する
public class A {
@Inject
public A(SomeType t)
{
workon(t1);
}
}
public class B extends A{
@Inject
private MemberType mt;
@Inject
public B(SomeType t)
{
super(t)
}
public void workOn(SomeType t)
{
// mt is not set yet since this method
// is called from the super constructor!
mt.setT(t);
}
}
: 以下の例示的な、非常に単純化され、コードを参照してください?
Bのインスタンスを作成するには、同じインスタンスが必要です。まあ、それはデザイン上の瑕疵のようなにおいがします。 – Juvanis