例如:
class A{
B b;
C c;
@Inject
A(B b){
this.b = b;
}
@Inject
A(C c){
this.c = c;
}
}
在其中一个模块中:
@Module
public class BModule {
private final B b;
public BModule(B b){
this.b = b;
}
@Provides
BInterface provideB(){
return b;
}
}
但是我得到错误,我不能在一个类中注入两个构造函数,我该怎么做才能解决这个问题?谢谢!
答案 0 :(得分:2)
类只构造一次;两个构造函数永远不会在同一个实例上被调用,因此有两个构造函数注释@Inject意味着Dagger必须选择一个。 您尝试使用这两个带注释的构造函数完成哪些行为?
理想情况下,组合构造函数。
@Inject
A(B b, C c){
this.b = b;
this.c = c;
}
如果绝对必要,可以将一个切换到method injection:
@Inject
A(B b){
this.b = b;
}
@Inject
void initialize(C c){ // Dagger calls this automatically
this.c = c;
}