gpt4 book ai didi

generics - Guice 类型 Kotlin 中的字面量

转载 作者:行者123 更新时间:2023-12-05 00:48:38 24 4
gpt4 key购买 nike

我有一个场景,我有一个通用接口(interface),并希望在 Guice 中绑定(bind)该接口(interface)的多个实现。通常在 Java 中,这意味着 TypeLiterals,在 Kotlin 中如何做到这一点?

bind(TypeLiteral<Resolver<RealObject>>(){}).to(RealResolver::class.java)

这会产生以下编译器错误: cannot access <init>: it is public/*package*/ in 'TypeLiteral'
有一个 TypeLiteral.get() 方法但是我似乎也无法让它工作

最佳答案

您应该使用 Kotlin object expression 而不是 Java 匿名类语法 (new TypeLiteral<Resolver<RealObject>>(){}) :

bind(object : TypeLiteral<Resolver<RealObject>>() { }).to(RealResolver::class.java)

您可以将其包装到具有具体类型参数的内联函数中:
inline fun <reified T> typeLiteral() = object : TypeLiteral<T>() { }

然后将其用作:
bind(typeLiteral<Resolver<RealObject>>()).to(RealResolver::class.java)

关于generics - Guice 类型 Kotlin 中的字面量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49261318/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com