Настройка привязок 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 этого класса больше не работает. Это происходит потому, что Котлин называет свой внутренний метод public fun <A, B> A.to(that: B): Pair<A, B> вместо LinkedBindingBuilder<T>.to(Class<? extends T> c) что приводит к Правило привязки не настроено правильно.

Как я могу явно указать, что я хочу использовать метод класса, а не функцию расширения?

    Самый простой способ:

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

    вы также можете сделать явное приведение к типу bind return или запустить KAnnotator на Guice.

    У меня была равная проблема с этим кодом, но в моем случае я не могу импортировать функцию kotlin.jvm.javaClass в Intellij IDEA 2016 независимо от того, что я делаю. Поэтому я решаю проблему следующим образом:

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

    // kotlin version = '1.0.6'