在注入构造函数之前注入成员变量

AHH*_*AHH 1 java dependency-injection

在类的注入构造函数中,我必须使用适当的参数调用超级构造函数。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);
    }
}
Run Code Online (Sandbox Code Playgroud)

除了手动初始化之外,有没有办法在调用继承的方法之前注入成员变量?

Adr*_*ter 5

您不应该从构造函数调用可覆盖的方法。有很多文章对此进行了解释,例如:http : //www.javapractices.com/topic/TopicAction.do?Id=215