kotlin,我们可以在另一个类中使用参数传递的实际变量值如何?
我在Kotlin使用授权。 因此,我有基本的类处理常见的网络结果,但唯一的区别是数据(模型类)
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
时,在BaseDataDelegation
类中更改BaseDataDelegation
值时,它应该反映回MainActivty
变量。
我怎么能在Kotlin做到这一点?
您可以使用可变属性引用来实现此目的。 这是一个例子:
class BaseDelegation<T>(val property: KMutableProperty0<T>) { override fun onSuccess(data: T) { property.set(data) } }
然后,构造一个BaseDelegation
,使用对属性的绑定引用 ,例如this::oldData
或myActivity::oldData
(属性本身应该是可变的,即var
)。
这是一个简化的可运行演示:( 链接)