-1

正如官方教程中提到的,我们可以将属性存储在一个 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 {}

是否可以委托这种嵌套结构?

4

1 回答 1

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) {}

你可以委托任何你想要的类型。

于 2019-03-05T07:39:42.553 回答