在类的注入构造函数中,我必须使用适当的参数调用超级构造函数。 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