我想设置 Guice 绑定,所以我在 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 绑定没有正确设置。
如何明确指定我要使用类方法而不是扩展函数?