将Java StringTokenizer转换为kotlin拆分时,我无法提供字符定界符的列表:
val delim : Array<Char> = arrayOf('(',')','{','}','[',/*many more...*/)
sourceExpr.split(delimiters=*delim,ignoreCase=false,limit=0)
在这里,由于某种原因,kotlin编译器无法区分
split(vararg String,...)
和split(vararg Char,...)
。问题:最佳答案
问题不是消除歧义,而是类型不正确。在Kotlin中,Array<Char>
等效于Java Character[]
。这意味着,当您使用*delim
时,实际上是在创建vararg Character
(而不是vararg Char
)。
相反,您应该更喜欢原始类型的CharArray
:
val delim: CharArray = charArrayOf('(', ')', '{', '}')
sourceExpr.split(delimiters = *delim, ignoreCase = false, limit = 0)