kotlin, ¿Cómo se puede cambiar el valor de la variable real en otra class a la que pasó mediante el parámetro?

Estoy usando Delegación en Kotlin. Por lo tanto, tengo una class base que maneja un resultado de networking común, pero solo la diferencia es Datos (class de model)

class BaseDataDelegation<T>(var oldData: T): WebDataListener<T> { override fun onSuccess(data: T) { oldData = data //oldData's original variable value which is inside main activity should also be updated /.../ } override fun onFailed() { /.../ } } 

entonces en MainActivity estoy llamando

 dataManager.getResponse(BaseDataDelegation(oldData))//in DataManager.getResponse(listener:WebDataListener<T>) 

Ahora, cuando pasé oldData a BaseDataDelegation , entonces cuando se cambia el valor de oldData en la class BaseDataDelegation , debe reflejar de nuevo la variable de MainActivty .
¿Cómo puedo hacer esto en Kotlin?

Puede usar una reference de propiedad mutable para lograr esto. Aquí hay un ejemplo:

 class BaseDelegation<T>(val property: KMutableProperty0<T>) { override fun onSuccess(data: T) { property.set(data) } } 

Luego, para build una BaseDelegation , use una reference enlazada a una propiedad, por ejemplo this::oldData o myActivity::oldData (la propiedad en sí misma debe ser mutable, es decir, var ).

Aquí hay una demo ejecutable simplificada: (enlace)

  • Forma dibujable en xml mismo código programáticamente
  • Error de Gmail "No se puede adjuntar file"
  • Rellene Cadena con Firestre
  • ¿Por qué los types de datos generics algebraicos requieren `T` en los types de miembros?
  • Función para expresión lambda
  • Convierte java en kotlin en pasta
  • ¿Es posible eliminar el molde sin marcar en Kotlin cuando se usa arrayOfNulls?
  • Kotlin Closable y SQLiteDatabase en Android
  • Prueba de unidad Kotlin que no encuentra la interfaz de dependencia del module
  • Convierte doble en ByteArray o Matriz <Byte> Kotlin
  • kotlin android start nuevo service