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() {
  }