generics - 如何获取泛型类型的实际类型?

标签 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 在编译时会删除泛型类型参数,因此除了传统反射提供的内容之外,您还需要在对象中提供一些其他证据。请参阅:

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?

关于generics - 如何获取泛型类型的实际类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5400394/

相关文章:

scala - 如何在scala spark中通过键连接两个数据集

scala - 在Scala中为嵌套类编写类型类实例

scala - 如何在 Scala 中查找列表中的唯一项

java - 为什么不能将 new Base() 传递给 <?扩展基地>?

c# - 将继承的转换为泛型基

scala - SparkSQL 函数需要类型为 Decimal

java - 如何从可变 Java 映射构建 Scala 不可变映射?

将列表列表传递给 Map 值时,Map 中的 Java 嵌套列表返回错误

c# - 是否可以去掉 Service 类中的 TClient 泛型类型

java - 为什么我不能将 List<X<Long>> 作为 List<X<?>> 的参数