/*
1,泛型的限定
*/ public static void main(string args)
swap(new string,1,2);
swap(new integer,2,3);//泛型引數必須為引用型別;
}/*2,泛型方法:
泛型類定義的反應,在整個類中有效,如果被方法使用,那麼泛型類的物件明確要操作的具體型別後,所有要操作的型別就已經固定了.
為了讓不同方法可以操作不同型別,而且型別還不確定,那麼可以將泛型定義在方法上.
*/ private static void swap(t a,int i,int j)
add(3,5);
number x1 = add(3.5,3);//返回是number型別
object x2 = add(3,"abc");//
private static t add(t x,t y)
/*3,利用泛型的方法限定,來轉換引數型別
*/ object boj="abc";
string x3 = autoconvert(obj);
private static t autoconvert(object obj)
/*4,簡單應用
*/ private static void fillarray(t a,t obj)
collection.add(obj);//用了泛型代替?萬用字元後,就可引用帶引數的方法了;
}/*5,萬用字元<?>,也可以理解為佔位符號
? extends e:可以接受e型別或者e的子型別 上限 <? extends e>
? super e:可以接受e或e的父型別 下限 <? super e>
arraylist<? extends object> al = new arraylist(); al.add("aa"); //錯
因為集合具體物件中既可儲存string,也可以儲存object的其他子類,所以新增具體的型別物件不合適,型別檢查會出現安全問題.
*///6,泛型的傳播
copy1(new vector(),new string[10]);//可以
copy2(new date[10],new string[10]);//可以
//copy1(new vector(),new string[10]);//錯誤
public static void copy1(collectiondest,t src)
public static void copy2(t dest,t src)}/*
7,new物件時,兩邊的泛型相容性
一邊使用泛型,一邊使用原始型別時,是可以相容的;
兩邊都使用泛型是,泛型引數不具備繼承性;
arraylistal = new arraylist(); //錯
*//*
8,定義泛型型別
如果類的例項物件中的多處都要用到同乙個泛型引數,即這些地方引用的泛型型別要保持同乙個實際型別時,這時候就要採用泛型型別的方式進行定義,也就是類級別的泛型.
public class genericdao
public t findbyid(int id){}
public void delete(t obj){}
public void delete(int id){}
public void update(t obj){}
public t findbyusername(){}
public setfindbyconditions(string where)}*/
/*9,靜態方法不能定義泛型,因為靜態載入時,還不知道有什麼物件,造成衝突;
*/
泛型 泛型類 泛型方法 泛型擦除
1 是什麼?一種允許我們在不確定引數型別時候使用的型別。例如我不知道a方法應該會傳string還是int,我就用個泛型先佔坑。2 為什麼要用泛型?泛型可以在編譯期自動確定具體型別,檢查型別是否匹配,可以提高 的重用率,減少冗餘編碼。3 泛型與object的區別?像上面說的我不知道方法a的引數型別,其...
泛型集合,非泛型集合
arraylist 非泛型集合 list 泛型集合 集合跟陣列比較我們更容易理解。陣列 1,長度固定2,資料型別預先宣告 集合 1,長度可變2,資料型別預先宣告的為泛型集合,資料型別不限定為非泛型 arraylist 長度不固定,元素資料型別為object的集合。object類之間或間接為所有類的父...
JAVA 泛型類,限制泛型和泛型方法
我在學習集合的時候對泛型還不太了解,只是覺得用了泛型之後能向自己的集合裡加入自己指定型別的物件,可以減少資料型別的轉換。那麼,脫離集合後,泛型到底該如何使用。今天碰巧看了一段關於泛型的講解,覺得泛型也沒有自己想象中那麼難,於是將自己的心得分享出來,希望能幫到有需要的人。泛型的知識點大概有 泛型類,限...