Java 如何提取泛型类型参数的数据类型?
例如: 我有一个类Java 如何提取泛型类型参数的数据类型?,java,scala,generics,Java,Scala,Generics,例如: 我有一个类foo[a]{…},我用foo[Int]创建了一个对象,然后我想在其代码体中获取a中的数据类型,以便进行一些处理。 当我在类的主体中使用A.isInstanceOf[…]引用“A”时,它表示找不到值A 有没有办法提取在Scala和/或Java中对象实例化后传递的类型参数的特定数据类型?一般的答案是——这是不可能的。泛型类型在编译阶段被擦除。 但是您可以了解scala是如何与清单一起工作的(对于新的scala版本,类标签) 一般的答案是——这是不可能的。泛型类型在编译阶段被擦除
foo[a]{…}
,我用foo[Int]创建了一个对象,然后我想在其代码体中获取a中的数据类型,以便进行一些处理。
当我在类的主体中使用A.isInstanceOf[…]
引用“A”时,它表示找不到值A
有没有办法提取在Scala和/或Java中对象实例化后传递的类型参数的特定数据类型?一般的答案是——这是不可能的。泛型类型在编译阶段被擦除。 但是您可以了解scala是如何与
清单
一起工作的(对于新的scala版本,类标签
)
一般的答案是——这是不可能的。泛型类型在编译阶段被擦除。 但是您可以了解scala是如何与
清单
一起工作的(对于新的scala版本,类标签
)
您需要的是Scala类型标签,请参阅 作为隐式使用,编译器负责在构造时“传入”下划线类型信息。因此,您可以稍后参考该信息
另外,在较旧版本的Scala中,正如mst所指出的,
Manifest
。Scala类型标签就是您要寻找的,请参阅
作为隐式使用,编译器负责在构造时“传入”下划线类型信息。因此,您可以稍后参考该信息
另外,在较旧版本的Scala中,正如mst所指出的那样,
Manifest
。在Java中,您可以使用它作为@JoopEggen回答中提到的类
的替代品。这将使您比直接使用更容易处理不同的泛型类型 在Java中,您可以使用@JoopEggen的答案中提到的类
。这将使您比直接使用更容易处理不同的泛型类型 Manifest
当前已弃用,您应该使用ClassTag
而不是Manifest
当前已弃用,您应该使用ClassTag