Kotlin 中的嵌套 属性 委托
Nested property delegation in Kotlin
如官方教程中所述,我们可以store properties in a Map并委托一个class给它:
class User(val map: Map<String, Any?>) {
val name: String by map
val age: Int by map
}
但是,有时我们将非平凡的结构存储在映射中,例如另一个 class(这在处理复杂的 json 时很常见)。为了更好地阐述我的想法,我想出了一个这样的伪代码:
class User(val map: Map<String, Any?>) {
val name: String by map
val otherType: OtherType by map
}
class OtherType {}
是否可以委托这样的嵌套结构?
没问题,你可以做到这一点。有效:
fun main(args: Array<String>) {
val user = User(mapOf("name" to OtherType(1)))
println(user)
}
data class User(val map: Map<String?, Any?>) {
val name: String by map
val otherType: OtherType by map
}
data class OtherType(val something:Int) {}
您可以委托任何类型。
如官方教程中所述,我们可以store properties in a Map并委托一个class给它:
class User(val map: Map<String, Any?>) {
val name: String by map
val age: Int by map
}
但是,有时我们将非平凡的结构存储在映射中,例如另一个 class(这在处理复杂的 json 时很常见)。为了更好地阐述我的想法,我想出了一个这样的伪代码:
class User(val map: Map<String, Any?>) {
val name: String by map
val otherType: OtherType by map
}
class OtherType {}
是否可以委托这样的嵌套结构?
没问题,你可以做到这一点。有效:
fun main(args: Array<String>) {
val user = User(mapOf("name" to OtherType(1)))
println(user)
}
data class User(val map: Map<String?, Any?>) {
val name: String by map
val otherType: OtherType by map
}
data class OtherType(val something:Int) {}
您可以委托任何类型。