class - Kotlin:如何将数据成员的属性传递给自己的属性?
问题描述
有两个班。第一类有公共财产。第二个类有一个私有数据成员,它是第一个类的一个实例和一个公共属性:
class A {
var s = "test"
}
class B {
private var a = A ()
public val prop = a.s
}
我希望道具是作为财产的参考。如果我们读取 prop,我们会得到存储在 as 中的值。如果我们写入 prop,则新值存储在 as 如果 as 的内容在其他地方发生变化,那么 prop 也应该相应地更新。这可以通过简单的方式完成吗?我试图这样做,就像在这段代码中一样public val prop = a.s
,但这不起作用 - 属性之间没有连接。
Kotlin 中是否有一种简单的方法可以引用另一个类的属性?
解决方案
属性之间没有联系
好吧,它们都引用了堆内存中的同一个 String 对象,它们完全相同。
但是,如果您覆盖对A.s
另一个 String 对象的引用,则A.s
持有新引用并B.prop
持有旧引用
那么如何解决这个问题呢?
您可以简单地将 getter 委托B.prop
给A.s
Kotlin。
class A {
var s = "test"
}
class B {
private var a = A ()
val prop: String
get() = a.s
}
推荐阅读
- python - 允许用户定义变量,并替换为值
- bash - 从带有 x-terminal-emulator 的 bash 脚本启动时,Google Datastore Emulator 进程失效,我该如何防止这种情况发生?
- flask - 烧瓶从另一个表中删除项目
- android - 如果应用程序未关闭,则每次运行时都会向应用程序添加多个线程
- javascript - jQuery 脚本阻止 HTML 在 Woocommerce 主题中加载
- swift - 无法从闭包中修改类的变量
- c# - 在 sqrt 之前添加距离条件是否会提高此代码的性能?
- c# - 两个 Html.EnumDropdownListFor 指令用于模型的 2 个枚举属性,一个不工作另一个
- go - golang servehttp 调用自己?
- reactjs - 准备请求的页面盖茨比