Al convertir Java StringTokenizer a kotlin split, no puedo proporcionar una lista de delimitadores de caracteres:
val delim : Array<Char> = arrayOf('(',')','{','}','[',/*many more...*/) sourceExpr.split(delimiters=*delim,ignoreCase=false,limit=0) Aquí, el compilador de kotlin, por alguna razón, no puede eliminar la ambigüedad entre split(vararg String,...) y split(vararg Char,...) . Preguntas:
El problema no es la desambiguación sino un tipo incorrecto. En Kotlin, Array<Char> es equivalente a Java Character[] . Eso significa que cuando usa *delim , en realidad está creando un vararg Character (en lugar de vararg Char ).
En su lugar, debería preferir el CharArray específico de primitivas:
val delim: CharArray = charArrayOf('(', ')', '{', '}') sourceExpr.split(delimiters = *delim, ignoreCase = false, limit = 0)