Generics 如何获取泛型类型的实际类型?

Generics 如何获取泛型类型的实际类型?,generics,scala,Generics,Scala,有一个泛型类型的类: class Action[T] 创建它的一些实例,放入列表: val list = List(new Action[String], new Action[Int]) 迭代它,以及如何获得实例的实际类型 list foreach { action => // how do I know the action is for a String or an Int? } Scala在编译时会删除泛型类型参数,所以您需要在对象中有一些额外的证据,而不是传统反射

有一个泛型类型的类:

class Action[T]
创建它的一些实例,放入列表:

val list = List(new Action[String], new Action[Int])
迭代它,以及如何获得实例的实际类型

list foreach { action =>
     // how do I know the action is for a String or an Int?
}

Scala在编译时会删除泛型类型参数,所以您需要在对象中有一些额外的证据,而不是传统反射提供的证据。见:

这个问题似乎暗示在某些情况下可能会有一些魔力:


我们在说什么语言?你能用
action.getClass()
吗?
action.getClass
不能分辨实际的类型