我在项目中使用dagger 2库。我想使用@Named批注来具有两种不同类型的REST适配器。

@Provides
@Singleton
@Named("adapter1")
@SuppressWarnings("unused")
RestAdapter provideRestAdapter1() {
  return ....;
}

@Provides
@Singleton
@Named("adapter2")
RestAdapter provideRestAdapter2() {
  return ....;
}


是否可以在提供方法内使用@Named批注以匕首自己插入适当的REST适配器?

@Provides
@Singleton
@SuppressWarnings("unused")
Service1 provideService1(@Named("adapter1") RestAdapter restAdapter) {
  return ....;
}

@Provides
@Singleton
@SuppressWarnings("unused")
Service2 provideService2(@Named("adapter2") RestAdapter restAdapter) {
  return ....;
}

最佳答案

如果您的模块包含上述所有四个方法,则该方法应该起作用:Service1将使用RestAdapter返回的provideRestAdapter1()

还是您在问是否可以跳过前两种方法,而让Dagger知道如何提供@Named("adapter1") RestAdapter本身?那是不可能的。

关于java - Dagger 2在provide方法中使用命名注释,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33096044/

10-12 04:17