有两个类。第一类拥有公共财产。第二个类有一个私有数据成员,它是第一个类的实例和一个公共属性:
class A {
var s = "test"
}
class B {
private var a = A ()
public val prop = a.s
}
我希望这个道具是对a.s属性的引用。如果我们读取prop,我们会得到存储在a.s中的值。如果我们写入prop,那么新值就会存储在a.s.中。如果a.s的内容在其他地方发生了变化,那么prop也应该相应地更新。这能用一种简单的方法吗?我试图像在这段代码中那样执行public val prop = a.s
,但这不起作用——属性之间没有连接。
在Kotlin中有没有一种简单的方法可以引用另一个类的属性?
属性之间没有连接
它们都引用了堆内存中的同一个String对象,它们完全相同。
但是,如果覆盖A.s
对另一个String对象的引用,那么A.s
将持有新引用,B.prop
将持有旧引用
那么如何解决这个问题呢
您可以简单地在Kotlin中将B.prop
的getter委托给A.s
。
class A {
var s = "test"
}
class B {
private var a = A ()
val prop: String
get() = a.s
}