Clases de datos de Kotlin: por qué toString () exporta properties privadas

Esta class de datos de Kotlin

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

tiene la propiedad privada lineNumber .

Cuando creo un object:

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

No espero que la function toString() también exponga lineNumber .

En Java efectivo, Joshua Bloch escribe

Proporcionar acceso programático a toda la información contenida en el valor devuelto por toString ()

Si no lo hace, los clientes de su biblioteca analizarán el resultado toString() para get acceso a lineNumber .

¿Alguien sabe por qué Kotlin no oculta las properties privadas en toString() en las classs de datos de forma pnetworkingeterminada?

No estoy seguro de por qué Kotlin permite properties privadas en constructores de class de datos, pero me parece que para una class de datos , "una class que no hace más que contener datos", querría que todas las properties de datos sean públicas y estén utilizado en las hashCode() equals() , hashCode() , toString() , componentN() y copy() .

Si este no es el caso, entonces no llamaría a esa class una "class de datos" y equals() , hashCode() , etc. deberían implementarse explícitamente.

  • ¿Por qué las expresiones Lambda se comportan de manera diferente para las classs de Kotlin y Java?
  • Android - Kotlin: valor de retorno en la diversión asíncrona
  • ¿Cómo agregar una vista gráfica en Android usando Kotlin?
  • ¿Cómo burlarse del object de Kotlin usando Mockito / PowerMockito?
  • ¿Cómo escribir lambdas con generics en kotlin?
  • Variables "coroutine local" en kotlin
  • MVP + RxJava - ¿Poner los progtwigdores en el presentador o en el interaccionador?
  • Desadaptación del tipo de Kotlin: ¡tipo inferido es Ver! pero se esperaba TextView
  • Crear una class de reloj digital usando Kotlin
  • En kotlin, ¿cómo hacer que el colocador de properties en el constructor primario sea privado?
  • ¿Ya funciona el modificador de visibilidad "interno" en Kotlin?