问题
在kotlin中,使用以下guice模块配置
fun configureFoo(binder: Binder) {
binder.bind(object: TypeLiteral<Foo<Iterable<Any>>>() {}).to(MyFoo::class.java)
}
以及示例类
interface Foo<T> {
// ...
}
class MyFoo : Foo<Iterable<Any>> {
// ...
}
class User @Inject constructor(foo: Foo<Iterable<Any>>) {
// ...
}
我得到guice配置错误:
No implementation for Foo<java.lang.Iterable<Any>> was bound. ...
我试过的
我可以通过改变 Iterable
至 java.lang.Iterable
到处都是。。。但这是一个糟糕的解决方法,失去了 kotlin.collections.Iterable
.
问题
有人知道这个问题并有更好的解决方法吗?
1条答案
按热度按时间2w3kk1z51#
简单的解决方法,直到找到更好的解决方案
现在我正在使用一个解决方法,如下所示,以防有人偶然发现这个问题:
我定义专业化
MultiFoo<Any>
使用它们代替Foo<Iterable<Any>>
每当我想为foo使用iterable类型参数时:虽然为注入绑定和构造函数参数创建和使用额外的类不是很漂亮,但至少注入的类遵循所需的接口约定。。。我可以用
MultiFoo<Any>
作为一个Foo<Iterable<Any>>