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
- Kotlin, el elenco inteligente es imposible debido a la expresión compleja
- Cómo asignar una cadena JSON al map de Kotlin
- ¿Kotlin proporciona mejoras en el performance?
- Registro de SQL con Expuesto en Spring Boot
- Dagger2: instancia duplicada en DoubleCheck
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?
- Cómo comparar una class <*> contra un tipo primitivo en caja Java sin las advertencias del comstackdor de Kotlin
- Errores de estudio de Android Kotlin de data binding
- Java Integer.MAX_VALUE vs Kotlin Int.MAX_VALUE
- TornadoFX: Type-Safe CSS con otras bibliotecas
- Convirtiendo java en kotlin
- Kotlin: ¿Mejor técnica de fusión de lists?
- La compilation de Kotlin falló en Android Studio
- ¿Cómo get opciones personalizadas en el plugin de protocolos para Java?
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)
- Kotlin "El reparto inteligente es imposible, porque la propiedad podría haberse cambiado en este momento"
- Firebase Firestre toObject () con Kotlin