kotlin, Как значение действительной переменной мы можем изменить в другом классе, к которому она передала параметр?

Я использую делегацию в Котлине. Поэтому у меня есть базовый класс, который обрабатывает общий сетевой результат, но только разница – это Data (Model class)

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() { /.../ } } 

то в MainActivity я звоню

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

Теперь, когда я передал oldData в BaseDataDelegation , поэтому, когда значение oldData изменяется в классе BaseDataDelegation оно должно отражать значение переменной MainActivty .
Как я могу сделать это в Котлине?

Для достижения этой цели вы можете использовать изменяемую ссылку свойства . Вот пример:

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

Затем, чтобы построить BaseDelegation , используйте связанную ссылку на свойство, например this::oldData или myActivity::oldData (само свойство должно быть изменчивым, т.е. var ).

Вот упрощенная демонстрационная версия: (link)