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") } } 
  • filterNotNull en Kotlin List con tipo genérico
  • Cómo get la class de parámetro genérico en Kotlin
  • Kotlin / IntelliJ: el comstackdor no puede encontrar el tipo de parámetro correcto de la function
  • Java permite acceder a la variable base de Kotlin a través de su hijo, pero no a Kotlin, ¿por qué?
  • Método de llamada en class genérica a través de la reflexión
  • ¿Cómo uso el object Kotlin por reflexión?
  • ¿Cómo hago que IntelliJ respete el directory de salida del complemento Maven Kotlin?
  • ¿Por qué el código de byte de Kotlin hace reference a java.util.function.BiConsumer?
  • @StringRes, @DrawableRes, @LayoutRes y demás annotations de android lint check con los parameters de kotlin
  • Android Despliegue las fonts de kotlin a un repository de maven
  • Fusionar observables dependientes