在JDK1.5之後引入瞭 范型的概念,到底什麼事范型的,在一段時間內 我也是很模糊 。。。。
下面我用一個ArrayList 來演示范型的作用 。
我們知道ArrayList 可以看做是一個線性表 , 我們在為進行范型規范化的時候,這個線性表中可以存儲的原始類型 可以是各種各樣的類型 ,這就說明一個表中 存儲瞭不同類型的數據 。 這樣做很不安全,而且容易出錯 。
看下面一段代碼,JAVA5以前 的版本
ArrayLsit col=new ArrayList() ;
col.add(1) ;
col.add("string") ;
col.add(false) ;
……
看到上面一個ArrayList中存儲各種各樣的 類型的元素
JDK1.5進行范型規范後Generic
ArrayList <Integer> col=new ArrayList() ;
col.add(1) ;//可以
col.add("string") ; // www.aiwalls.com 會報錯,因為進行瞭范型規范之後 這個線性表中隻能存儲Integer類型的數據 ,
這樣做就很好的保證瞭集合類型的唯一性、。。。。。
以上隻是范型的簡單應用,范型在反射中也應用到瞭 。看下面一段代碼
Constructor con=String.class.getConstructor(StringBuffer.class) ;
String str=(String) con.newInstance(new StringBuffer("xiaowei")); //註意 這裡我們對於String的構造方法映射類 創建的對象需要強制轉換
System.out.println(str);
但是進行瞭范型規范之後就不需要瞭,這就是范型的作用 。
Constructor<String> con=String.class.getConstructor(StringBuffer.class) ;
String str=con.newInstance(new StringBuffer("xiaowei"));
System.out.println(str);
范型是給編譯器看的,在編譯字節碼文件之後 就會去類型化
作者 yue7603835的專欄