【发布时间】:2019-07-05 09:15:15
【问题描述】:
我有一个包装数据对象的类。我想
class SomeWrappingClass {
lateinit var data: SomeDataHolder
// Want to 'forward' many properties to the data class
var thing0: String? by data
var thing1: String? by data
var thing2: String? by data
}
或者更现实地像:
var thing0: String? by data.thing0
以下功能可以实现,但据我了解,它们使用反射,我想保持 SomeDataHolder 清晰。我没有尝试过反射,但我看到它们要么变得很大,要么变成了一个键值映射。
SomeDataHolder {
operator fun getValue(internationalTransferViewModel: SomeWrappingClass, property: KProperty<*>): String? {
TODO("not implemented")
}
operator fun setValue(internationalTransferViewModel: SomeWrappingClass, property: KProperty<*>, s: String?) {
TODO("not implemented")
}
所以基本上有一个更短的方法来写这个:
var thing: String?
get() = data.thing
set(value) {
data.thing = value
}
现在我要公开SomeWrappingClass 的data 类。让来电者做myWrap.data.thing = Thing()
有没有一种方法可以不经反思就实现我所要求的目标?
【问题讨论】:
标签: kotlin