如何創建代表通用對象的Class
?如何獲得泛型類的類?
List<String> list = new List<String>();
Class c1 = list.class;
Class c2 = Class.forName(???); // <- how?
assert c1 == c2;
如何創建代表通用對象的Class
?如何獲得泛型類的類?
List<String> list = new List<String>();
Class c1 = list.class;
Class c2 = Class.forName(???); // <- how?
assert c1 == c2;
一個類的對象是不特定於滿足其類型參數的特殊類:
assert (new ArrayList<String>()).getClass() == (new ArrayList<Integer>()).getClass();
它是完全相同的對象,無論它是如何打出來。
由於type erasure由於通用信息在運行時不存在,所以不能。
您的代碼可以這樣寫:
List<String> list = new ArrayList<String>();
Class c1 = list.getClass();
Class c2 = Class.forName("java.util.ArrayList");
System.out.println(c1 == c2); // true
Class
並不代表一般類型。使用的適當類型是java.lang.reflect.Type
,特別是ParameterizedType
。你可以通過反射來獲得這些物體或製作你自己的物體。
(注意,仿製藥是一個靜態打字功能,這樣是不是真的適合運行時對象。靜態類型的信息恰好被保存在類文件並通過反射物體的反射API暴露。)
是什麼你真的想在這裏完成? – 2011-02-17 14:30:15