Kotlin: how to pass a property of a data member to an own property?
有两个班级。第一类有公共财产。第二个类有一个私有数据成员,它是第一个类的一个实例和一个公共属性:
1
2 3 4 5 6 7 8 |
class A {
var s =“test” } class B { |
我希望 prop 是对 a.s 属性的引用。如果我们读取 prop,我们会得到存储在 a.s. 中的值。如果我们写入 prop ,那么新值将存储在 a.s.如果 a.s 的内容在其他地方发生了变化,那么 prop 也应该相应地更新。
这可以通过简单的方式完成吗?我试着做,就像在这段代码中一样,public val prop = a.s,但这不起作用 – 属性之间没有连接。
在 Kotlin 中是否有一种简单的方法可以对另一个类的属性进行这样的引用?
- 使用 val prop get() = a.s。这定义了属性的 getter 函数,因此它将始终返回 a.s 的当前值。
There is no connection between the properties
嗯,它们都引用了堆内存中的同一个字符串对象,它们完全一样。
但是如果你覆盖 A.s 对另一个 String 对象的引用,那么 A.s 将持有一个新的引用,而 B.prop 将持有旧的引用
那么如何解决这个问题呢?
您可以简单地将 B.prop 的 getter 委托给 Kotlin 中的 A.s。
1
2 3 4 5 6 7 8 9 |
class A {
var s =“test” } class B { |
来源:https://www.codenong.com/63083816/