这个 Kotlin 数据类
data class PhoneNumber(val prefix: String, private val lineNumber: String)
Run Code Online (Sandbox Code Playgroud)
拥有私有财产lineNumber。
当我创建一个对象时:
val phoneNumber = PhoneNumber("0676", "123456")
// toString() = PhoneNumber(prefix=0676, lineNumber=123456)
Run Code Online (Sandbox Code Playgroud)
我不希望该toString()函数也公开lineNumber.
在 Effective Java 中,Joshua Bloch 写道
提供对 toString() 返回值中包含的所有信息的编程访问
如果您不这样做,您图书馆的客户将解析toString()结果以访问lineNumber.
有谁知道为什么 KotlintoString()默认不隐藏数据类中的私有属性?
我不知道为什么 Kotlin 允许在数据类构造函数中使用私有属性,但在我看来,对于一个数据类,“一个除了保存数据什么都不做的类”,你会希望所有的数据属性都是公开的并且是用于equals()、hashCode()、toString()、componentN()函数和copy()。
如果不是这种情况,那么我不会把这样的一类“数据类”和equals(),hashCode()等应明确实现。
| 归档时间: |
|
| 查看次数: |
1137 次 |
| 最近记录: |