gpt4 book ai didi

Kotlin 通过类属性委托(delegate)所有字段

转载 作者:行者123 更新时间:2023-12-02 13:23:20 28 4
gpt4 key购买 nike

我有一个包装类 Manager具有属性 managerInfo类型 UserInfo我无法修改。包装类只是在 info 对象周围添加业务规则。在代码中,我需要访问 managerInfo 的属性并每次写入 manager.managerInfo.username有点冗长。

我知道我可以像这样将属性委托(delegate)给这个信息对象:

class Manager {
...
val username by UserInfo
...
}

然后我可以简单地做 manager.username .但问题是 info 类有大约 15 个属性,手动执行此操作会很麻烦。

有没有办法通过 Kotlin lang 或某个库来委托(delegate)所有属性?

最佳答案

你可以做implementation by delegation ,看起来像这样:

interface UserCommon {
val username: String
val email: String
}

data class UserInfo(
override var username: String,
override var email: String
) : UserCommon

class Transaction(
userInfo: UserInfo
) : UserCommon by userInfo

那堂课后 Transaction将具有 UserCommon 的所有属性可以,但执行被委托(delegate)给 userInfo它被传递给构造函数。

另一种方法是转换 UserInfoMutableMap并将属性调用委托(delegate)给该映射:
class Transaction(
userInfoMap: HashMap<String, Any>
) {
var username: String by userInfoMap
var email: String by userInfoMap
}

关于Kotlin 通过类属性委托(delegate)所有字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49998433/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com