如何获得泛型类型的实际类型?

Fre*_*ind 9 generics scala

有一个泛型类:

class Action[T]
Run Code Online (Sandbox Code Playgroud)

创建它的一些实例,放入一个列表:

val list = List(new Action[String], new Action[Int])
Run Code Online (Sandbox Code Playgroud)

迭代它,以及如何获得实例的实际类型?

list foreach { action =>
     // how do I know the action is for a String or an Int?
}
Run Code Online (Sandbox Code Playgroud)

Ant*_*ter 11

Scala在编译时会删除泛型类型参数,因此除了传统反射提供的内容之外,您还需要在对象中添加一些其他证据.看到:

如何在Scala上绕过类型擦除?或者,为什么我不能获得我的集合的类型参数?

这些问题似乎意味着在某些情况下可能会有一些魔力:

在Scala泛型类'equals'方法中考虑类型参数...是唯一的方法吗?