Dagger 2 - 缺少构造函数注入示例

Dagger 2 - Lack of Constructor Injection example

我花了几个小时搜索,但我仍然没有找到任何关于使用 Dagger 2 进行构造函数注入的明确示例。

假设我有以下声明,我如何使用 Dagger 2 注入在某处创建 class B 的实例?

@Module
public class ClassA {
    @Provides public ClassA provideA(){
        return new ClassA();
    }
}
public class ClassB{
    private ClassA a;
    @Inject public ClassB(ClassA a){
        this.a = a;
    }
}

如果你有

@Module
public class ModuleA {
    /*unscoped*/ @Provides public ClassA provideA(){
        return new ClassA();
    }
}

/*unscoped*/
public class ClassB{
    private ClassA a;

    @Inject public ClassB(ClassA a){
        this.a = a;
    }
}

那么你需要

/*unscoped*/
@Component(modules={ModuleA.class})
public interface MyComponent {
    ClassA classA();
    ClassB classB();
}

然后你可以这样访问

MyComponent component = DaggerMyComponent.create();
ClassB classB = component.classB();

/*unscoped*/
@Component(modules={ModuleA.class})
public interface MyComponent {
    ClassA classA();
    ClassB classB();

    void inject(MyClass myClass);
}

public class MyClass {
    @Inject
    ClassB classB;

    public void init() {
        MyComponent component = getComponent();
        component.inject(this);
    }
}