gpt4 book ai didi

guice - 在 Kotlin 中设置 Guice 绑定(bind)

转载 作者:行者123 更新时间:2023-12-02 08:33:12 27 4
gpt4 key购买 nike

我想设置 Guice 绑定(bind),所以我用 Java 创建了一个完美运行的模块:

public class CrashLoggerModule extends AbstractModule {
@Override
public void configure() {
bind(CrashLogger.class).to(ConcreteCrashLogger.class);
}
}

然后我将此代码转换为 Kotlin:

public class CrashLoggerModule : AbstractModule() {
override fun configure() {
bind(javaClass<CrashLogger>()).to(javaClass<ConcreteCrashLogger>())
}
}

不幸的是,此类的 Kotlin 版本不再有效。发生这种情况是因为 Kotlin 调用其内部方法 public fun <A, B> A.to(that: B): Pair<A, B>而不是 LinkedBindingBuilder<T>.to(Class<? extends T> c)这会导致 Guice 绑定(bind)设置不正确。

如何明确指定我要使用类方法而不是扩展函数?

最佳答案

最简单的方法是:

bind(javaClass<CrashLogger>())!!.to(javaClass<ConcreteCrashLogger>())

您还可以对类型绑定(bind)返回进行显式转换或在 Guice 上运行 KAnnotator。

关于guice - 在 Kotlin 中设置 Guice 绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24569949/

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