基本的泛型:
public class genericstest }
輸出結果很明顯是abc和3
現在用放射看看他們的位元組碼是不是同乙份:
在程式中加入下面**:
system.out.println(collection1.getclass()==collection2.getclass());
這行**的輸出結果是true------說明arraylist雖然有不同的泛型在記憶體中位元組碼只有乙份,就是編譯完成之後就沒有型別資訊了,已經去型別化了,為了證明這個可以行,用反射向arraylistcollection2 = new arraylist();中增加string型別的物件。
首先若是直接collection2.add("abc");編譯器肯定是會報錯的。因為collection2是integer型別的。
下面用反射進行實驗:
輸出結果為:
abc 3
true
abc
泛型反射技巧
1 如何獲得乙個封閉構造型別 closed constructed type 的type物件?假設有如下的型別 class testtype t class testtype t,u 如果要獲得封閉構造型別的type物件,那麼只需要用c 的typeof運算子,或者vb的gettype運算子作用於具體...
泛型和反射
泛型允許程式設計師在 中將變數或引數的型別,先用 型別佔位符 來代替,等到允許的時候再根據傳入的 類 來代替 泛型是指帶型別引數的類,而不是引數本身。類 方法 結構 介面都可定義為泛型 可以定義多個引數 public class person 例項化乙個引用引數型別的泛型,它的記憶體分配的大小是一樣...
泛型與反射
泛型 泛型的作用 泛型是jdk1.5以後才有的,可以在編譯時期進行型別檢查,且可以避免頻繁型別轉化!泛型的使用 泛型的方法 public class genericdemo 測試方法 test public void testmethod throws exception 泛型的類 public c...