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

 2022-02-13 

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 {
    private var a = A ()
    public val prop = a.s
}

我希望 prop 是对 a.s 属性的引用。如果我们读取 prop,我们会得到存储在 a.s. 中的值。如果我们写入 prop ,那么新值将存储在 a.s.如果 a.s 的内容在其他地方发生了变化,那么 prop 也应该相应地更新。
这可以通过简单的方式完成吗?我试着做,就像在这段代码中一样,public val prop = a.s,但这不起作用 - 属性之间没有连接。

在 Kotlin 中是否有一种简单的方法可以对另一个类的属性进行这样的引用?


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 {
    private var a = A ()
    val prop: String
        get() = a.s
}