假设我有两个服务AService
和BService
,这两个服务都需要api密钥。
所以在我的模块中,我做不了类似的事情:
@Provides @Singleton @A @ApiKey String provideAKey() { return "a"; }
@Provides @Singleton @B @ApiKey String provideBKey() { return "b"; }
(Dagger会抱怨“每个元素只允许一个限定符注释”)。
相反,我必须为每个组合定义两个单独的限定符:@ApiKeyA
和@ApiKeyB
。
对于具有多个依赖项的服务(考虑网络客户端,请求标头等),为每个组合定义这些限定符变得很麻烦,而不是简单地组合不同的注释。
这有明确禁止的原因吗?
答案 0 :(得分:4)
简化Dagger的实施,并使其更快。
答案 1 :(得分:2)
请参阅this issue: JSR330禁止有多个限定符注释。
有关详细信息,this discussion可能会有所帮助。