我有一个包装类,它具有我可以\xe2\x80\x99t 修改的类型Manager属性。包装类只是在信息对象周围添加业务规则。在代码中,我需要访问managerInfo的属性,并且每次编写都有点冗长。managerInfoUserInfomanager.managerInfo.username
我知道我可以将属性委托给这个信息对象,如下所示:
\n\n\n\nclass Manager {\n...\n val username by UserInfo\n...\n}\nRun Code Online (Sandbox Code Playgroud)\n\n然后我就可以简单地做manager.username。但问题是 info 类有大约 15 个属性,手动执行此操作会很混乱。
有没有办法通过 Kotlin lang 或某个库来委托所有属性?
\n您可以通过委托来实现,如下所示:
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
Run Code Online (Sandbox Code Playgroud)
之后该类Transaction将具有所有属性UserCommon,但实现将委托给userInfo传递给构造函数的实现。
另一种方法是转换UserInfo为该MutableMap映射并将属性调用委托给该映射:
class Transaction(
userInfoMap: HashMap<String, Any>
) {
var username: String by userInfoMap
var email: String by userInfoMap
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1573 次 |
| 最近记录: |