Usando @JvmOverloads de Kotlin con el patrón Fragment.newInstance () de Android

Intenté lograr esto definiendo tanto la diversión de alto nivel como la diversión estática de un object compañero, pero obtengo el mismo resultado. Puedo ver los methods generados, pero no hay ninguno para newInstance(mouse: Mouse?) ¿Qué estoy entendiendo mal sobre cómo se llama esto desde Java?

 // MyFragment.kt @JvmOverloads fun newInstance(bird: Bird? = null, bee: Bee? = null, cat: Int? = -1, mouse: Mouse? = null) : MyFragment { //Put params in Bundle, put bundle in fragment... return MyFragment() } // MyActivity.java MyFragment fragment = MyFragmentKt.newInstance(bird, bee, cat); // compiles MyFragment fragment = MyFragmentKt.newInstance(mouse); // does not compile 

La anotación @JvmOverloads hace que el comstackdor genere todos los methods al omitir los parameters finales. No genera methods para todas las permutaciones de parameters.

Si un método tiene N parameters y M de los cuales tiene valores pnetworkingeterminados, se generan M sobrecargas: el primero toma los parameters N-1 (todos less el último que toma un valor pnetworkingeterminado), el segundo toma los parameters N-2 , y así en.

Así que MyFragmentKt.newInstance(bird) existirá, mientras que MyFragmentKt.newInstance(mouse) o incluso MyFragmentKt.newInstance(bee) no existirán.

  • RxJava2: onComplete no llamado con flatMapIterable
  • Divide el código Kotlin2JavaScript en varios modules maven
  • Cómo configurar la tarea processResources en una compilation de Gradle Kotlin
  • Cliente de Android y server de Java en el mismo proyecto de git
  • Calculadora simple, testing unitaria usando KOTLIN con Spek (código de salida -1)
  • Cómo convertir un file fuente kotlin a un file fuente java
  • Kotlin JSR-223 ScriptEngineFactory dentro del contenedor de grasa - No se puede encontrar el comstackdor de kotlin
  • ¿Cómo utilizar las annotations de tipo de soporte de Android en kotlin?
  • Kotlin smart cast no funciona para LinearLayout.LayoutParams
  • Usar kotlin con ContentResolver causa IllegalArgumentException
  • Kotlin equivalente del operador ternario