Kotlin:如何将数据成员的属性传递给自己的属性



有两个类。第一类拥有公共财产。第二个类有一个私有数据成员,它是第一个类的实例和一个公共属性:

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
}

相关内容

最新更新