本文介绍了如何获得泛型类型 T 的类实例?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个泛型类,Foo
.在Foo
的方法中,我想获取T
类型的类实例,但是我就是不能调用T.class
.
I have a generics class, Foo<T>
. In a method of Foo
, I want to get the class instance of type T
, but I just can't call T.class
.
使用 T.class
绕过它的首选方法是什么?
What is the preferred way to get around it using T.class
?
推荐答案
简短的回答是,在 Java 中没有办法找出泛型类型参数的运行时类型.我建议阅读 Java 教程中关于类型擦除的章节更多详情.
The short answer is, that there is no way to find out the runtime type of generic type parameters in Java. I suggest reading the chapter about type erasure in the Java Tutorial for more details.
一个流行的解决方案是将类型参数的 Class
传递给泛型类型的构造函数,例如
A popular solution to this is to pass the Class
of the type parameter into the constructor of the generic type, e.g.
class Foo<T> {
final Class<T> typeParameterClass;
public Foo(Class<T> typeParameterClass) {
this.typeParameterClass = typeParameterClass;
}
public void bar() {
// you can access the typeParameterClass here and do whatever you like
}
}
这篇关于如何获得泛型类型 T 的类实例?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!