La function de copy de class de datos Kotlin no funciona

Tal vez estoy malinterpretando cómo funciona la function de copy de una class de data o tal vez hay un error, pero el siguiente es un ejemplo de que la function de copy no funciona como se esperaba:

Kotlin:

 data class A { public var x: String? = null public var y: String? = null public var z: B = B.ONE } enum class B { ONE TWO THREE } 

Java

 A a1 = new A() a1.setX("Hello") a1.setY("World") a1.setZ(B.TWO) A a2 = a1.copy() // a2.x is null // a2.y is null // a2.z is B.ONE 

Parece que copy es solo hacer una nueva instancia de A y no copyr los valores. Si pongo las variables en el constructor, los valores son asignados, pero luego no es diferente a build una nueva instancia.

De acuerdo, me perdí esta oración en los documentos:

Si alguna de estas funciones se define explícitamente en el cuerpo de la class o se henetworkinga de los types base, no se generará.

Lo cual, de hecho, hace que copy no sea mejor que un constructor para la interoperabilidad de Java.

Lo que puede hacer para evitar las limitaciones de la copy de Kotlin (), es crear su propia function de copy dentro de su class de datos. Ejemplo a continuación:

 data class User(val name : String, val property: String) { fun copy() : User { //uses the fields name and property defined in the constructor return User(name,property) } //or if you need a copy with a changed field fun copy(changedProperty : String) : User { return User(name, changedProperty) } } 
  • ¿Cómo recuperar todos los documentos de la colección Firestre en la class POJO?
  • ExpandableListView no se muestra en mi actividad
  • Director de Android: Cómo retener el estado de las vistas de los cambios de orientación
  • Kotlin - Defina la variable globalmente para WebView
  • Android Koltin pasa los valores del girador a la list mutable
  • ¿Cómo omitir el parámetro constructor con un valor pnetworkingeterminado al llamar a Kotlin en Java?
  • Kotlin JPA: cómo lidiar con la initialization de @OneToOne
  • ¿Cómo puedo llamar a los methods de extensión desde fuera de la class en la que están definidos?
  • getExternalFilesDir devuelve directorys inconsistentes
  • Kotlin: el comstackdor no deduce el tipo genérico para algunos operadores
  • Error de statement de function al comstackr con Kotlin 12