Android 使用Dagger 2提供供应商空地图的@Multibiding
我的问题是:我试图声明具有以下签名的多重绑定:Android 使用Dagger 2提供供应商空地图的@Multibiding,android,kotlin,dagger-2,android-architecture-components,Android,Kotlin,Dagger 2,Android Architecture Components,我的问题是:我试图声明具有以下签名的多重绑定:Map。当我的作用域模块中有一个IntoMap时,多重绑定会按预期工作。但是,此映射可能是空的,也可能不是空的,这取决于作用域,因此,我明确声明@Multibinds,如下所示,以支持文档建议的空映射: @模块 抽象类碎片模块{ @多重绑定 抽象有趣的片段ProviderMap(): 地图 } 但是,此代码产生以下错误消息: 错误:@Multibinds方法必须返回Map或Set 调查Dagger 2的源代码,我发现这是建议: @测试 公共地图{
Map
。当我的作用域模块中有一个IntoMap
时,多重绑定会按预期工作。但是,此映射可能是空的,也可能不是空的,这取决于作用域,因此,我明确声明@Multibinds
,如下所示,以支持文档建议的空映射:
@模块
抽象类碎片模块{
@多重绑定
抽象有趣的片段ProviderMap():
地图
}
但是,此代码产生以下错误消息:
错误:@Multibinds方法必须返回Map或Set
调查Dagger 2的源代码,我发现这是建议:
@测试
公共地图{
assertThatModuleMethod(“@Multibinds抽象映射提供程序映射();”)
.带声明(模块声明)
.hasError(“@Multibinds方法必须返回Map或Set”);
}
为了便于参考,您可以找到此代码
我有两个疑问:
提供程序的空映射?这将为我节省大量的样板文件和不必要的@Inject
重复
感谢您的关注。从单个映射多绑定定义来看,Dagger可以同时注入(Kotlin等价物)
map
和map
也许你只是在寻找
@Multibinds
抽象有趣的片段ProviderMap():
地图
?
请参阅中的“映射多绑定”和“声明多绑定”。有一种可能是,这个
Map
只有在它实际上是MutableMap
时才起作用,出于某种原因,Google示例似乎非常喜欢它。