Em scala, como transformar os valores do objeto em Map [String, String]?

Vamos dizer que eu tenho essa classe

case class Test (id: Long, name: String)

e uma instância dessa classe:

Test :
id -> 1
name -> toto

Eu gostaria de criar um Map [String, String] como segue:

Map( "id" -> "1", "name" -> "toto")

Minha pergunta é: existe uma maneira de transformar essa instância do teste em [String, String]? Eu quero evitar usar um método como este:

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
}

Se não houver um método para fazer isso no Scala, existe uma maneira de iterar propriedades de classe? Talvez eu possa criar uma função genérica para fazer isso:

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
}

Isso é possível ? Se você tem bons exemplos / links, estou interessado.

questionAnswers(3)

yourAnswerToTheQuestion