Android 在匕首2中使用@Binds和@Named
我的模块如下所示Android 在匕首2中使用@Binds和@Named,android,dagger-2,dagger,Android,Dagger 2,Dagger,我的模块如下所示 @Module public abstract class BindsModuleEx { @Binds @Named("obj2") public abstract SomeInterface provideSomeInterface2(SomeInterfaceImpl2 someInterfaceImpl); @Binds @Named("obj1") public abstract SomeInterface prov
@Module
public abstract class BindsModuleEx {
@Binds
@Named("obj2")
public abstract SomeInterface provideSomeInterface2(SomeInterfaceImpl2 someInterfaceImpl);
@Binds
@Named("obj1")
public abstract SomeInterface provideSomeInterface1(SomeInterfaceImpl1 someInterfaceImpl);
}
我的
SomeInterface
实现如下所示
public class SomeInterfaceImpl1 implements SomeInterface {
@Inject
@Named("obj1")
public SomeInterfaceImpl1() {
}
我可以在
@Binds
方法上使用@Named
或@Qualifier
吗?
我知道使用@提供
和@命名
,但我想知道为什么这不起作用,以及解决这种情况的正确方法
错误消息如下所示
error: @Qualifier annotations are not allowed on @Inject constructors.
~提前感谢。构造函数声明中没有@Named限定符-您需要在注入目标上使用它,例如,如果您在活动中注入“obj1”,您将在其中使用限定符。我就是这样修改它的,它是有效的
public class MainActivity extends BaseActivity {
@Inject
@Named("obj1")
SomeInterface someInterface1;
@Inject
@Named("obj2")
SomeInterface someInterface2;
}
这就是我现在对SomeInterface
的实现
public class SomeInterfaceImpl1 implements SomeInterface {
@Inject
public SomeInterfaceImpl1() {
}
public class SomeInterfaceImpl1 implements SomeInterface {
@Inject
public SomeInterfaceImpl1() {
}