如官方教程中所述,我们可以store properties in a Map并将一个类委托给它:
class User(val map: Map<String, Any?>) {
val name: String by map
val age: Int by map
}
但是,有时我们在地图中存储非平凡的结构,就像另一个类一样(在处理复杂的json时很常见)。为了更好地阐述我的想法,我想出了一个伪代码,如下所示:
class User(val map: Map<String, Any?>) {
val name: String by map
val otherType: OtherType by map
}
class OtherType {}
是否可以委托这样的嵌套结构?
答案 0 :(得分:1)
没问题,您可以执行此操作。它的工作原理:
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) {}
您可以委派任何所需的类型。