標籤:
1.這是一個通用
仿製藥javaA型安全機制來保護。
它是通過變數的類型,如果,實現變數類型限制,從而保證了程式編譯變數類型的安全性在一定程度上。反之。如果沒有泛型,這些只存在於程式,如果猿的大腦,這將導致類型轉換異常發現,當程式執行。
//不用泛型List list1 = new ArrayList();list1.add(1);Object o = list1.get(0); //返回Object類型對象Integer i = (Integer) o; //需預Crowdsourced Security Testing道類型//用泛型List<String> list2 = new ArrayList<String>();list2.add("aaa");String str = list2.get(0); //直接返回定義時指定的類型,防止類型轉換異常
2.多泛型
多泛型是指。在一個類型定義時使用多個泛型。在Map中多見多泛型的應用。例如以下:
Map<String,String> map = new HashMap<String,String>();Set<Map.Entry<String,String>> set = map.entrySet();for(Iterator<Map.Entry<String,String>> iter = set.iterator();iter.hasNext();){String key = iter.next().getKey();String value = iter.next().getValue();}
//多泛型定義public class MutilGeneric<T,E> {
<span style="white-space:pre"></span>private T attr1; //定義成員變數<span style="white-space:pre"></span>private E attr2;
3.限制泛型可用類型
不限制泛型類別時,能夠使用不論什麼類型來執行個體化泛型型別中的類型。即在不設定預設類型時。泛型型別一般是Object,但在實際開發中,我們往往須要對類型加以限制,指定泛型型別僅僅能在一定的範圍內。java泛型中給我們提供了這種機制。通過extendskeyword。我們就能夠指定泛型型別範圍,這裡指定的類型必須是繼承自某個類或實現某個介面。詳細定義例如以下:
/** * 定義泛型類,限制類型僅僅能為List<Person>的子類 * @author caoxr * @param <T> */public class PersonSeqUtil<T extends List<Person>> {4.類型萬用字元<?
>或<? extends ClassType>
個人理解類型萬用字元的使用,是為了實如今定義泛型類持有人時,限制泛型可用類型的範圍,擴充泛型型別持有人對象可接納類型的範圍。代碼示意例如以下:
PersonSeqUtil<LinkedList<Person>> psu1 = new PersonSeqUtil<LinkedList<Person>>();PersonSeqUtil<ArrayList<Person>> psu2 = new PersonSeqUtil<ArrayList<Person>>();//運用萬用字元定義PersonSeqUtil對象,使其傳入類型僅僅能為List<person>的子類PersonSeqUtil<? extends List<Person>> psu = null;psu = new PersonSeqUtil<LinkedList<Person>>();psu = new PersonSeqUtil<ArrayList<Person>>();//也能夠通過super定義,要求指定類型為指定繼承類型的父類PersonSeqUtil<? super ArrayList<Person>> psu3 = null;psu3 = new PersonSeqUtil<List<Person>>();List<? extends Object> list = new ArrayList<Object>();list.add(null);list.add("haha"); //報錯,編譯不通過
注意上述代碼中,當向list中add null時,代碼是編譯通過的,而當放入字串“haha”時,則編譯不通過,按常理分析。Object類為所以類型的父類,應該是編譯通過的。但其實並不是如此,由於從list的定義來看,list僅僅同意放Object的子類。但不知道詳細放什麼類型。假設能放入詳細類型的話,這就意味著當我們再取出時,必須記得它是什麼類型。然後強制轉擷取的變化進入值。因此,我們失去了仿製藥的意義。
著作權聲明:本文部落格原創文章,部落格,未經同意,不得轉載。
java一般使用基礎