是否有方法在構造函數中找到泛型類型?在java中獲取構造函數中的泛型類型
public class geneticarg {
public static void main(String[] args) {
a<String> a1 = new a<String>("a");
a<String> a2 = new a<String>(null); // gives NPE
System.out.println(a1.getClazz());
}
}
class a<T> {
private Class<T> clazz;
private T element;
public a(T clazz) {
this.clazz = (Class<T>) clazz.getClass();
this.element = clazz;
// what if clazz is null ?
}
//getter and setter
}
編輯:這是沒有必要總是字符串來。
由於類型擦除不可能http://docs.oracle.com/javase/tutorial/java/generics/erasure.html – gefei
可以反射在這裏做一些魔術? –
泛型類型被編譯器清除 – gefei