科特林的嵌套财产代表团

时间:2019-03-05 03:45:58

标签: kotlin kotlin-delegate

如官方教程中所述,我们可以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 {}

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

1 个答案:

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

您可以委派任何所需的类型。