java 9.2 自定義泛型及容器中的使用
自定義泛型
我們可以在類的聲明處增加泛型列表,如:<T,E,V>。
此處,字元可以是任何標識符,一般採用這3個字母。
【示例9-1】泛型類的聲明
class MyCollection<E> {// E:表示泛型;
Object[] objs = new Object[5];
public E get(int index) {// E:表示泛型;
return (E) objs[index];
}
public void set(E e, int index) {// E:表示泛型;
objs[index] = e;
}
}
泛型E像一個佔位符一樣表示「未知的某個數據類型」,我們在真正調用的時候傳入這個「數據類型」。
Advertisements
【示例9-2】泛型類的應用
public class TestGenerics {
public static void main(String[] args) {
// 這裡的」String」就是實際傳入的數據類型;
MyCollection<String> mc = new MyCollection<String>();
mc.set("aaa", 0);
mc.set("bbb", 1);
String str = mc.get(1); //加了泛型,直接返回String類型,不用強制轉換;
System.out.println(str);
}
}
容器中使用泛型
容器相關類都定義了泛型,我們在開發和工作中,在使用容器類時都要使用泛型。這樣,在容器的存儲數據、讀取數據時都避免了大量的類型判斷,非常便捷。
Advertisements
【示例9-3】泛型類的在集合中的使用
public class Test {
public static void main(String[] args) {
// 以下代碼中List、Set、Map、Iterator都是與容器相關的介面;
List<String> list = new ArrayList<String>();
Set<Man> mans = new HashSet<Man>();
Map<Integer, Man> maps = new HashMap<Integer, Man>();
Iterator<Man> iterator = mans.iterator();
}
}
通過閱讀源碼,我們發現Collection、List、Set、Map、Iterator介面都定義了泛型,如下圖所示:
因此,我們在使用這些介面及其實現類時,都要使用泛型。
菜鳥雷區
我們只是強烈建議使用泛型。事實上,不使用編譯器也不會報錯!
❤如果需要小編每天的發文資料,請私信小編即可!
❤提問/互動請留言,可直接在最底右下方"寫留言即可"
❤如果覺得寫得不錯請點擊「訂閱」,每天更新內容!