Как я могу получить простое имя класса, включая generi c, используя TypeTag
? Я думаю, что подпись метода должна выглядеть следующим образом:
def getClassName[A: TypeTag](a: A): String
getClassName(Map("a" -> 123))
должен возвращать Map[String,Int]
.
То, что я пробовал:
def getClassName[A: TypeTag](a: A): String = {
typeOf[A].typeSymbol.name.toString
}
scala> getClassName(Map("a" -> 123))
res1: String = Map
def getClassName[A: TypeTag](a: A): String = {
typeOf[A].typeSymbol.toString
}
scala> getClassName(Map("a" -> 123))
res1: String = trait Map
def getClassName[A: TypeTag](a: A): String = {
typeOf[A].toString
}
scala> getClassName(Map("a" -> 123))
res1: String = scala.collection.immutable.Map[String,Int] // It knows the full type!
def getClassName[A: TypeTag](a: A): String = {
typeOf[A].typeSymbol.fullName
}
scala> getClassName(Map("a" -> 123))
res1: String = scala.collection.immutable.Map