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

问题描述:

没有与泛型类:如何获得泛型类型的实际类型?

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? 
} 
+1

,我们在谈论什么语言? – Doodloo 2011-03-23 03:02:01

+0

你可以使用'action.getClass()'吗? – Gabe 2011-03-23 03:03:43

+0

'action.getClass'不能告诉实际的类型 – Freewind 2011-03-23 03:05:23

斯卡拉在编译擦除泛型类型参数,所以你需要有一些额外的证据,你反对比传统的反射提供了其他。请参阅:

How do I get around type erasure on Scala? Or, why can't I get the type parameter of my collections?

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

Accounting for type parameters in a Scala generic class 'equals' method... are manifests the only way?