如何获得泛型类型的实际类型?
问题描述:
没有与泛型类:如何获得泛型类型的实际类型?
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?
}
答
斯卡拉在编译擦除泛型类型参数,所以你需要有一些额外的证据,你反对比传统的反射提供了其他。请参阅:
How do I get around type erasure on Scala? Or, why can't I get the type parameter of my collections?
这个问题似乎在暗示可能有一些魔术在某些情况下适用:
,我们在谈论什么语言? – Doodloo 2011-03-23 03:02:01
你可以使用'action.getClass()'吗? – Gabe 2011-03-23 03:03:43
'action.getClass'不能告诉实际的类型 – Freewind 2011-03-23 03:05:23