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)

  • ¿Hay una mejor manera de filter nulo en una list?
  • Kotlin: ¿"eso" asignable?
  • Conversión de código creador Java Parcel a Kotlin
  • ¿Cómo puedo compartir la configuration de compilation entre dos files build.gradle.kts?
  • ¿Por qué el comstackdor no encuentra la constante android.R.id.home?
  • Usando Moshi con múltiples campos de input
  • Crea una rueda giratoria que networkingimensiona su ancho cuando se selecciona un elemento
  • ¿Kotlin apoya la comprensión monádica?
  • Cómo upload files a S3 Amazon por Okhttp3 y Android
  • Kotlin Coroutines con valor de retorno
  • Compruebe si EditText está vacío mientras calcula los numbers