Tengo dos métodos en java:
Object get(A a) Object get(A a, B... b)y cuando intento invocar el primer método en Kotlin
get(someInstance)Siempre invoca el segundo método con el segundo parámetro vacío.
¿Cómo podría llamar al primer método de Kotlin en este caso?
En primer lugar, esto no sucede cuando los métodos se definen en Kotlin:
class A class B fun f(a: A) { println("one") } fun f(a: A, vararg rest: B) { println("many") } fun main(args: Array<String>) { f(A()) } imprime one . Al buscar en https://youtrack.jetbrains.com/issues?q=kotlin%20vararg%20java no puedo encontrar este problema exacto ( https://youtrack.jetbrains.com/issue/KT-11150 está cerca, pero tiene get(Object a) como sobrecarga no vararg). Así que le sugiero que lo publique allí si puede reproducirlo.
Dos posibles soluciones:
tratando de adaptar un truco de la sobrecarga de funciones de Kotlin (varargs vs parámetro único) :
val a: A = ... a.let(::get)definir un contenedor en Java:
Object getNonVararg(A a) { return get(a); }y llámalo desde Kotlin.