3 回答

TA貢獻(xiàn)1878條經(jīng)驗(yàn) 獲得超4個(gè)贊
List<Integer> list1 = new ArrayList<Integer>();List<String> list2 = (List<String>)list1;list2.add("foo"); // perfectly legal
Field.getGenericType()
Object.getClass()
public final native Class<?> getClass();
Class<?>
.
為什么沒有具體參數(shù)化類型的類文字? 因?yàn)閰?shù)化類型沒有精確的運(yùn)行時(shí)類型表示。
類文字表示 Class
表示給定類型的。例如,類文字 String.class
表示 Class
表示類型的 String
并且與 Class
方法時(shí)返回的 getClass
在 String
對(duì)象。類文字可用于運(yùn)行時(shí)類型檢查和反射。
在名為類型擦除的過(guò)程中,參數(shù)化類型在編譯過(guò)程中被轉(zhuǎn)換為字節(jié)碼時(shí),會(huì)丟失它們的類型參數(shù)。作為類型擦除的副作用,泛型類型的所有實(shí)例化都共享相同的運(yùn)行時(shí)表示,即對(duì)應(yīng)的原始類型的運(yùn)行時(shí)表示。換句話說(shuō),參數(shù)化類型沒有它們自己的類型表示形式。因此,沒有必要形成類文字,例如 List<String>.class
,List<Long>.class
和 List<?>.class
,因?yàn)闆]有 Class
物體存在。只有原始類型 List
有一個(gè) Class
表示其運(yùn)行時(shí)類型的。它被稱為 List.class
.
添加回答
舉報(bào)