のは、私はこのクラススカラでは、オブジェクトの値をMap [String、String]に変換する方法は?
case class Test (id: Long, name: String)
と、このクラスのインスタンスを持っているとしましょう:
Test :
id -> 1
name -> toto
私は次のように地図[文字列、文字列]を作成したいと思います
:
Map("id" -> "1", "name" -> "toto")
を
私の質問は、このTestのインスタンスをMap [String、String]にする方法はありますか?私はこの1つの方法を使用することを避けたい:
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
}
それは可能ですか?良い例やリンクがあるなら、私は興味があります。
[この質問](http://stackoverflow.com/questions/2224251/reflection-on-a-scalacase-class)への回答が役に立ちます。 – incrop
私はジェネリックソリューションが好きではありませんが、この問題では 'Map(" id " - > t.id.toString、" name " - > t.name)'を使用します。 't'は'テスト'。 – sschaef
チップをありがとう! – alexgindre