例如,如果我有 a class NewClass(val a: Seq[String])
,我可以通过classOf[NewClass].getDeclaredFields.head.getGenericType.asInstanceOf[java.lang.reflect.ParameterizedType].getActualTypeArguments.head.asInstanceOf[Class[_]]
它获取类型参数的实际类型 a java.lang.String
。
但是,如果类型参数是原始类型(Java 中不允许,但 Scala 中允许),例如class NewClass(val a: Seq[Int])
,使用相同的方法只会产生java.lang.Object
. 有什么办法让我知道它实际上是 aInt
而不是 general java.lang.Object
?