Java 泛型 - 获取类?
我得到了一个列表,编程如下:.有没有办法使用T变量来获取类的名称(这样我就可以从内部知道T是否是字符串,套接字等)?public class MyList<T>
MyList
编辑:别介意,在这里找到了答案。
我得到了一个列表,编程如下:.有没有办法使用T变量来获取类的名称(这样我就可以从内部知道T是否是字符串,套接字等)?public class MyList<T>
MyList
编辑:别介意,在这里找到了答案。
简短的回答:你不能。
长答案:
由于泛型在 Java 中实现的方式,泛型类型 T 不会保留在运行时。不过,您可以使用私有数据成员:
public class Foo<T>
{
private Class<T> type;
public Foo(Class<T> type) { this.type = type; }
}
用法示例:
Foo<Integer> test = new Foo<Integer>(Integer.class);
我喜欢的解决方案
http://www.nautsch.net/2008/10/28/class-von-type-parameter-java-generics/
public class Dada<T> {
private Class<T> typeOfT;
@SuppressWarnings("unchecked")
public Dada() {
this.typeOfT = (Class<T>)
((ParameterizedType)getClass()
.getGenericSuperclass())
.getActualTypeArguments()[0];
}
...