Configurar enlaces de Guice en Kotlin

Quiero configurar los enlaces de Guice, así que creé un module en Java que funciona perfectamente:

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

Luego convertí este código a Kotlin:

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

Desafortunadamente, la versión de Kotlin de esta class ya no funciona. Esto sucede porque Kotlin llama a su método interno public fun <A, B> A.to(that: B): Pair<A, B> lugar de LinkedBindingBuilder<T>.to(Class<? extends T> c) que da como resultado La encuadernación de Guice no está configurada correctamente.

¿Cómo puedo especificar explícitamente que quiero usar el método de class y no la function de extensión?

La forma más fácil es:

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

también puedes hacer un lanzamiento explícito al tipo bind devuelve o ejecutar KAnnotator en Guice.

Tuve un problema similar con este código, pero en mi caso no puedo importar la function kotlin.jvm.javaClass en Intellij IDEA 2016 sin importar lo que haga. Entonces resuelvo el problema de la siguiente manera:

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

// kotlin version = '1.0.6'

  • Live Template no funciona en Kotlin
  • ¿Dónde deberían savese los files de estado?
  • Kotlin encadena el performance de las funciones de colección
  • ¿Se puede usar Flink con Kotlin?
  • jackson-dataformat-csv no ignora las properties desconocidas
  • RecyclerView con Kotlin no colocando celdas verticalmente
  • Usando Mockito, ¿cómo espío la class Kotlin con la statement de campo val interface?
  • Objetos complementarios: ¿desea Android registrarlos como actividades (?)
  • Ejemplo de Kotlin foreachblock
  • Sala de Android select muchos a muchos LiveData
  • Mapa de Kotlin: ¿por qué no hay paraHashMap ()?