使用限定符注解绑定泛型接口仍触发Dagger DuplicateBindings错误
问题原因
你自定义的@WorkerContract注解缺少Dagger要求的@Qualifier元注解,无法被识别为绑定区分的限定符。此时Dagger会认为你是对同泛型参数的IWorkerContract<List<ShopItemDescription>, String>做了两次无差别绑定,因此触发重复绑定错误。
解决方案
分两步操作即可修复:
- 给
@WorkerContract注解添加@Qualifier元注解,修改后代码如下:
import javax.inject.Qualifier @Qualifier // 新增此行 @Retention(AnnotationRetention.RUNTIME) annotation class WorkerContract(val value: EWorkerContracts)
- 检查注入两个
IWorkerContract实例的位置(即报错信息里的ShopItemInteractor构造函数),给两个参数分别加上对应的限定符:
class ShopItemInteractor @Inject constructor( @WorkerContract(EWorkerContracts.SHOP_ITEM_PROD) private val shopItemProductWorkerContract: IWorkerContract<List<ShopItemDescription>, String>, @WorkerContract(EWorkerContracts.SHOP_ITEM_TECH) private val shopItemTechnicalWorkerContract: IWorkerContract<List<ShopItemDescription>, String>, // 其他参数 ) { // 类逻辑 }
内容的提问来源于stack exchange,提问作者Andrew
相关产品推荐
相关产品推荐

