首页 > 解决方案 > Dagger2:如何在多态期间注入成员变量?

问题描述

public class A {
    protected B mB;
    public A() {
        createB();
    }
    public void createB() {
        mB = new B();
    }
}

public class ChildA extends A {

    public ChildA() {
        super();
    }
    public void createB() {
        mB = new ChildB();
    }
}

public class B {
    public B() {
    }
}

public class ChildB extends B {
    public ChildB() {
    }
}

public class DemoApp {
    public static void main(String[] args) {
        A a = new ChildA();
    }
}

根据上面的代码,我们可以看到:

  1. 当一个 A 被更新时,一个 B 被创建

  2. 当一个 ChildA 被新建时,一个 ChildB 被创建。

我的问题是如何在这种多态性情况下注入 mB?如果设计模式不合适,我该如何重构代码?

标签: javadesign-patternsdagger-2

解决方案


推荐阅读