Я воспроизвел вашу проблему и смог ее исправить; Я думаю, что ключевым вопросом является как передать initArgs в CodeBlock.of : этот метод ожидает второй параметр varargs, но вы передаете одно значение Array <...>.
Изменение кода следующим образом работает:
fun main(args: Array<String>) {
val initString = "mutableMapOf(Pair(%T, %T), Pair(%T, %T))"
val initArgs = arrayOf(String::class.java, String::class.java, String::class.java, String::class.java)
val result = CodeBlock.of(initString, *initArgs)
println("result is $result")
}
Ключевым моментом является передача *initArgs
, а не initArgs
, как второго параметра CodeBlock.of
.
Я явно инициализировал initArgs
'значения с типом значений, чтобы соответствовать %T
ожиданиям заполнителя.
Надеюсь, это поможет вам!