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

2024-03-10

有一个具有泛型类型的类:

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

如何解决 Scala 上的类型擦除问题?或者,为什么我无法获取集合的类型参数? https://stackoverflow.com/questions/1094173/how-do-i-get-around-type-erasure-on-scala-or-why-cant-i-get-the-type-parameter

这个问题似乎暗示在某些情况下可能有一些神奇的应用:

考虑 Scala 泛型类“equals”方法中的类型参数...清单是唯一的方法吗? https://stackoverflow.com/questions/3283885/accounting-for-type-parameters-in-a-scala-generic-class-equals-method-are-ma

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何获取泛型类型的实际类型? 的相关文章

随机推荐