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

Kotlin中String.format动态接收任意长度List参数的代码重构问题

Kotlin 可变参数格式化重构方案

直接使用 Kotlin 展开运算符适配任意长度参数,无需维护分支判断,重构后代码如下:

private fun formatTest(args: List<String>?): String {
    // args.orEmpty() 兼容入参为null的场景,展开运算符*将数组转为可变长参数传入format方法
    return java.lang.String.format(code.message, *args.orEmpty().toTypedArray())
}

方案说明

  • java.lang.String.format 第二个参数本身是可变长参数,Kotlin 中使用*运算符即可将数组直接展开为可变长参数传入,天然适配任意长度的入参列表,后续参数个数增加到5、10都不需要修改逻辑
  • 原有代码中使用args?.size说明入参args是可空类型,args.orEmpty()会在args为null时返回空列表,空列表转数组传入的效果和原有else分支的无额外参数调用完全一致
  • 如果需要避免占位符数量和入参数量不匹配的问题,可以自行补充校验逻辑,示例如下:
private fun formatTest(args: List<String>?): String {
    val actualArgs = args.orEmpty()
    // 示例:校验占位符数量和入参数量是否匹配,可根据业务需求调整
    val placeholderCount = "%[\\d\\$]*[sdf]".toRegex().findAll(code.message).count()
    check(actualArgs.size == placeholderCount) {
        "占位符数量为${placeholderCount},入参数量为${actualArgs.size},两者不匹配"
    }
    return java.lang.String.format(code.message, *actualArgs.toTypedArray())
}

内容的提问来源于stack exchange,提问作者양기열

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 06:42:03