static class food{}
static class fruit extends food{}
// complie error:
// flist.add(new fruit());
// flist.add(new object());
flist.add(null); // only work for null
fruit fruit = flist.get(0);
由於,其中放置是從fruit中繼承的型別,所以可以安全地取出fruit型別。
flist.contains(new fruit());
在使用collection中的contains 方法時,接受object 引數型別,可以不涉及任何萬用字元,編譯器也允許這麼呼叫。
list<? super fruit> flist = new arraylist();
flist.add(new fruit());
// compile error:
// compile error:
fruit item = flist.get(0);
因為,list<? super fruit>中的型別可能是任何fruit 的超型別,所以編譯器無法確定get返回的物件型別是fruit,還是fruit的父類food 或 object.
extends 可用於的返回型別限定,不能用於引數型別限定。
super 可用於引數型別限定,不能用於返回型別限定。
>帶有super超型別限定的萬用字元可以向泛型對易用寫入,帶有extends子型別限定的萬用字元可以向泛型物件讀取
Java泛型總結(集合泛型 方法泛型 萬用字元)
1,泛型的限定 public static void main string args swap new string,1,2 swap new integer,2,3 泛型引數必須為引用型別 2,泛型方法 泛型類定義的反應,在整個類中有效,如果被方法使用,那麼泛型類的物件明確要操作的具體型別後,所...
泛型(萬用字元)
1 宣告好泛型型別之後,集合中只能存放特定型別元素 2 泛型型別必須是引用型別 3 使用泛型後取出元素不需要型別轉換.泛型函式 當函式中使用了乙個不明確的資料型別,那麼在函式上就可以進行泛型的定義。public 泛型的宣告 返回值型別 函式名 泛型 變數名 泛型類 修飾符 class 類名 泛型 泛...
泛型 萬用字元
利用泛型技術雖然解決了向下轉型所帶來的安全隱患問題,但同時又會產生乙個新的問題 即便是同乙個類,但是由於設定泛型型別的不同,那麼其物件表示的含義也是不同,是不能夠直接進行引用操作的,例如 現在有如下乙個類。class message public t getmsg 使用萬用字元 解決引數傳遞問題 p...