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

时间:2011-03-23 03:01:02

标签: 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?
}

1 个答案:

答案 0 :(得分:11)

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

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?