Получить конкретное простое имя универсального типа в Scala

Можно ли получить имя типа универсального класса в Scala? Я знаю, что это невозможно в Java с типом erasur e, но я надеялся, что Scala будет другим случаем.

В настоящее время мне нужно сделать что-то похожее на это:

trait Model
case class User(id: String) extends Model

def fromMap[M<:Model : Manifest](data: Map[String, String], modelType: String) = {
  modelType match {
    case "user" => User(data.get("id").get)
  }
}

val user = fromMap[User](Map("id" -> "id1"), "user")

Очевидно, было бы проще, если бы я мог определить «пользователя», не передавая его .

5
задан Ben Smith 24 August 2011 в 14:26
поделиться