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解析器。
- 在地图中存储属性