gpt4 book ai didi

java - 如何获取Scala Seq[T]或Option[T]中原始类型参数的实际类型?

转载 作者:行者123 更新时间:2023-12-02 07:26:18 25 4
gpt4 key购买 nike

例如,如果我有一个 class NewClass(val a: Seq[String]),我可以通过 classOf[NewClass] 获取类型参数的实际类型。 getDeclaredFields.head.getGenericType.asInstanceOf[java.lang.reflect.ParameterizedType].getActualTypeArguments.head.asInstanceOf[Class[_]] 这是一个java.lang.String

但是,如果类型参数是原始类型(Java 中不允许,但 Scala 中允许),例如 class NewClass(val a: Seq[Int]),则使用同样的方法只会产生java.lang.Object。有什么办法让我知道它实际上是一个 Int 而不是一般的 java.lang.Object

最佳答案

你能使用 list 吗?

scala> class NewClass[T](val a: Seq[T])(implicit m: Manifest[T])
defined class NewClass

scala> class NewClass[T](val a: Seq[T])(implicit m: Manifest[T]) {
| def typeOfA = m.erasure
| }
defined class NewClass

scala> val newClass = new NewClass(Seq(1, 2, 3))
newClass: NewClass[Int] = NewClass@494e1df7

scala> newClass.typeOfA
res17: java.lang.Class[_] = int

关于java - 如何获取Scala Seq[T]或Option[T]中原始类型参数的实际类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13556609/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com