我在项目中使用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/