在Kotlin中设置Guice绑定

我想设置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绑定没有正确设置。

我怎样才能明确指出,我想使用类方法,而不是扩展功能?

最简单的方法是:

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

你也可以做一个显式的强制类型转换,或者在Guice上运行KAnnotator。

我对这个代码有同样的问题,但在我的情况下,我不能在Intellij IDEA 2016中导入函数kotlin.jvm.javaClass,无论我做什么。 所以我按以下方式解决问题:

bind(CrashLogger::class.java).to(ConcreteCrashLogger::class.java)

// kotlin version ='1.0.6'