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
相关产品推荐
相关产品推荐

