В Scala, как превратить значения объекта в Map [String, String]?
Допустим, у меня есть этот класс
case class Test (id: Long, name: String)
и экземпляр этого класса:
Test :
id -> 1
name -> toto
Я хотел бы создать карту [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
}
Это возможно ? Если у вас есть хорошие примеры / ссылки, мне это интересно.