在類的注入構造函數中,我必須使用適當的參數調用超級構造函數。 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