You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin中如何向String.format传递vararg参数?

解决方案

问题核心是Kotlin的IntArray与Java可变参数Object...的类型适配问题:

  • 你的vararg arg: Int在函数内部是IntArray类型,直接传递arg会把整个数组作为单个参数传给String.format,而格式符%d需要的是单个int值,因此抛出类型转换异常。
  • 直接用*arg无效是因为Kotlin不会自动将IntArray的元素装箱为Integer(Java的Object子类),而String.format需要的是Object类型的可变参数。

修改代码如下:

fun execute(userId: UserId, action: Action, vararg arg: Int){
    dataRepository.logAction(userId, String.format(action.log, *arg.toTypedArray()))
}

原理说明

  1. arg.toTypedArray()将IntArray转换为Array<Int>,Kotlin会自动将每个Int元素装箱为Integer。
  2. 用展开运算符*把Array<Int>的元素逐个传递给String.format的可变参数,匹配格式符的参数要求。

内容的提问来源于stack exchange,提问作者Alexandre Herbreteau

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 06:14:53