假设我有这门课
case class Test (id: Long, name: String)
和这个类的一个实例:
Test :
id -> 1
name -> toto
我想创建一个 Map[String, String] 如下:
Map( "id" -> "1", "name" -> "toto")
我的问题是:有没有办法把这个 Test 实例变成 Map[String, String] ?我想避免使用这种方法:
def createMap(instance: Test): Map[String, String] = {
val map = new Map[String, String]
map.put("id", instance.id.toString)
map.put("name", instance.name)
map
}
如果在 Scala 中没有这样做的方法,有没有办法迭代类属性?也许我可以创建一个通用函数来这样做:
def createMap(instance: T): Map[String, String] = {
val map = new Map[String, String]
//pseudocode
for ((name, value) <- instance.getClassProperties.getValues) {
case value.isInstanceOf[String] : map.push(name, value)
case _ : map.push(name, value.toString)
}
map
}
那可能吗 ?如果您有很好的示例/链接,我很感兴趣。