Kotlin数据类:为什么toString()导出私有属性

这Kotlin数据类

data class PhoneNumber(val prefix: String, private val lineNumber: String) 

有私有财产lineNumber

当我创建一个对象时:

 val phoneNumber = PhoneNumber("0676", "123456") // toString() = PhoneNumber(prefix=0676, lineNumber=123456) 

我不希望toString()函数也暴露lineNumber

在有效的Java中,Joshua Bloch写道

提供程序访问toString()返回的值中包含的所有信息

如果你不这样做,你的库的客户端将解析toString()结果来访问lineNumber

有谁知道为什么Kotlin不会隐藏数据类中toString()私有属性作为默认值?

我不确定为什么Kotlin允许在数据类构造函数中使用私有属性,但是在我看来,对于一个数据类来说 ,“一个类只能保存数据”,所有的数据属性都是公开的,用在equals()hashCode()toString()componentN()函数和copy()

如果不是这种情况,那么我不会调用这样的类“数据类”, equals()hashCode()等应该明确地实现。