我花了几个小时搜索,但仍然没有找到任何关于 Dagger 2 构造函数注入(inject)的明确示例。
假设我有以下声明,如何使用 Dagger 2 注入(inject)在某处创建 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);
}
}
关于dependency-injection - Dagger 2 - 缺少构造函数注入(inject)示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40562481/