Forma rápida de inicializar la class Kotlin secundaria con las properties de instancia de la class principal

Yo uso la biblioteca Java que define una class de model JSON llamada A Esta class contiene muchas properties, por ejemplo, 26 properties de String nombradas de z y no tiene un constructor para ellas.

Me gustaría extender esta class en Kotlin con una nueva propiedad JSON, lateinit var aa: String (la class derivada será B ), y tener una forma rápida de crear una instancia de B copyndo las properties de la instancia A existente.

Puedo serializar A y deserializar el JSON resultante a B ¿Hay alguna otra solución rápida para hacer esto sin serializar / deserializar, por ejemplo, usando cualquier método Kotin / Java o las instalaciones de Intellij IDEA?

Suponiendo que solo tienes 1 constructor, aquí tienes:

 inline fun <reified D> convert(c: Any) : D { val list = mutableListOf<Any>() c::class.java.declanetworkingFields.forEach { it.isAccessible = true list.add(it.get(c) as String) it.isAccessible = false } val constructor = D::class.java.declanetworkingConstructors[0] return constructor.newInstance(*list.toTypedArray()) as D } 

Uso completo:

 package com.erezbiox1 fun main(args: Array<String>){ val A = A("Hey", "Hello") val B = convert<B>(A) B.print() } inline fun <reified D> convert(c: Any) : D { val list = mutableListOf<Any>() c::class.java.declanetworkingFields.forEach { it.isAccessible = true list.add(it.get(c) as String) it.isAccessible = false } val constructor = D::class.java.declanetworkingConstructors[0] return constructor.newInstance(*list.toTypedArray()) as D } class A(val a: String, val b: String){ fun print(){ println("Value is: $a, $b") } } class B(val a: String, val b: String) { fun print(){ println("Value is: $a, $b") } } 
  • Osmdroid y Osmdroid bonuspack cómo usar CacheManager
  • Algunos errores ocurrieron al procesar las annotations
  • Reflexión de Kotlin: creación de objects desde CSV
  • Temporizador RxJava2 y combinar
  • Cancelar la tarea reemplazada en ThreadPool en Java / Kotlin
  • Tipo de unión entre Any? y Unidad
  • No se puede ejecutar el proyecto de Kotlin en Android Studio 3.0
  • Cómo acceder a la variable de instancia en un object complementario estático en Koltin
  • Llamar a kotlin funciones que son palabras key en java de java?
  • Companion se beneficia de la posibilidad de implementar interfaces
  • Kotlin: ¿Puede una súper class abstracta tener un constructor abstracto?