Kotlin,什么时候通过地图来代表?

我检查了delegate文件,发现有一个提供的委托类型map

 class MutableUser(val map: MutableMap<String, Any?>) { var name: String by map var age: Int by map } 

但我无法弄清楚没有delegate的版本之间有什么区别,如下所示:

 class MutableUser(val map: MutableMap<String, Any?>) { var name: String var age: Int } 

by map代表的常用用法是什么?

谢谢!

不同的是,在委托的第一个例子中,你所要做的就是把map放到构造函数中完成。

 val user = MutableUser(mutableMapOf( "name" to "John Doe", "age" to 25 )) println(user.name) // Prints "John Doe" println(user.age) // Prints 25 

但是为了使这与你的第二个例子一样,你必须从你自己的map实现属性的初始化。

 class MutableUser(val map: MutableMap<String, Any?>) { var name: String var age: Int init { name = map["name"].toString() age = map["age"].toString().toInt() } } 

一个常见的用例是实现一个JSON解析器。

  • 在地图中存储属性