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

Kotlin中Int类型为何自动转为String?无需调用toString()?

Kotlin字符串模板中Int自动转为String的原因

你的代码

// 补充User类定义,否则代码无法编译运行
data class User(val name: String, val age: Int)

fun main() {
    val users = listOf(
        User("Tom", 32),
        User("Kirill", 44),
        User("Anton",51)
    )
    val stringUsers = conversation(users)
    println(it) // 此处存在语法问题:it仅在Lambda上下文有效,正确写法应为 stringUsers.forEach { println(it) }
}

fun conversation(users: List<User>): List<String> {
    val string = mutableListOf<String>()
    for (user in users)
        string.add("Name: ${user.name}, Age: ${user.age}")
    return string
}

关于Int自动转为String的解答

在Kotlin的字符串模板(即${}语法)中,任何表达式都会被自动转换为字符串——Kotlin会隐式调用该表达式结果的toString()方法,不管它是Int这类基本数据类型,还是自定义对象。

所以你写${user.age}时,Kotlin底层已经帮你执行了user.age.toString(),完全不需要手动调用。

补充说明:

  • 对于自定义对象,比如直接写${user},会调用该对象的toString()方法。默认实现返回类名@哈希值,如果是data class,Kotlin会自动生成包含属性信息的toString(),比如User(name=Tom, age=32)。
  • 这种隐式转换是Kotlin为简化代码设计的特性,避免了Java中频繁手动调用toString()的繁琐。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 04:24:57