Java泛型是什麼
導語:泛型,即“引數化型別”。一提到引數,最熟悉的就是定義方法時有形參,然後呼叫此方法時傳遞實參。那麼引數化型別怎麼理解呢?讓我們瞭解一下吧!
顧名思義,就是將型別由原來的具體的型別引數化,類似於方法中的變數引數,此時型別也定義成引數形式(可以稱之為型別形參),然後在使用/呼叫時傳入具體的型別(型別實參)。
看著好像有點複雜,首先我們看下上面那個例子採用泛型的寫法。
1 public class GenericTest {
2
3 public static void main(String[] args) {
4 /*
5 List list = new ArrayList();
6 ("qqyumidi");
7 ("corn");
8 (100);
9 */
10
11 List
12 ("qqyumidi");
13 ("corn");
14 //(100); // 1 提示編譯錯誤
15
16 for (int i = 0; i < (); i++) {
17 String name = (i); // 2
18 tln("name:" + name);
19 }
20 }
21 }
採用泛型寫法後,在//1處想加入一個Integer型別的物件時會出現編譯錯誤,通過List
結合上面的泛型定義,我們知道在List
1 public interface List
2
3 int size();
4
5 boolean isEmpty();
6
7 boolean contains(Object o);
8
9 Iterator
10
11 Object[] toArray();
12
13
14
15 boolean add(E e);
16
17 boolean remove(Object o);
18
19 boolean containsAll(Collection c);
20
21 boolean addAll(Collection c);
22
23 boolean addAll(int index, Collection c);
24
25 boolean removeAll(Collection c);
26
27 boolean retainAll(Collection c);
28
29 void clear();
30
31 boolean equals(Object o);
32
33 int hashCode();
34
35 E get(int index);
36
37 E set(int index, E element);
38
39 void add(int index, E element);
40
41 E remove(int index);
42
43 int indexOf(Object o);
44
45 int lastIndexOf(Object o);
46
47 ListIterator
48
49 ListIterator
50
51 List
52 }
我們可以看到,在List介面中採用泛型化定義之後,
自然的,ArrayList作為List介面的實現類,其定義形式是:
1 public class ArrayList
2 implements List
3
4 public boolean add(E e) {
5 ensureCapacityInternal(size + 1); // Increments modCount!!
6 elementData[size++] = e;
7 return true;
8 }
9
10 public E get(int index) {
11 rangeCheck(index);
12 checkForComodification();
13 return entData(offset + index);
14 }
15
16 //...省略掉其他具體的定義過程
17
18 }
由此,我們從原始碼角度明白了為什麼//1處加入Integer型別物件編譯錯誤,且//2處get()到的型別直接就是String型別了。
-
Java語法基礎for語句練習
本文是本站小編搜尋整理的關於Java語法基礎for語句練習,供參考學習,希望對大家有所幫助!想了解更多相關資訊請持續關注我們應屆畢業生考試網!控制語句——for練習語句的巢狀應用累加求和,計數器迴圈巢狀一、語句的巢狀應用語句巢狀形式。其實就是語句中...
-
Java程式設計示例教程
本文以例項形式詳細講述了Java的反射機制,是Java程式設計中重要的技巧。分享給大家供大家參考。具體分析如下:首先,Reflection是Java程式開發語言的特徵之一,它允許執行中的Java程式對自身進行檢查,或者說"自審",並能直接操作程式的內部屬性。例如,使用它能獲得Java類...
-
Java 非同步回撥機制例項解析
回撥,回撥。要先有呼叫,才有呼叫者和被呼叫者之間的回撥。下面小編給大家介紹Java非同步回撥機制例項解析,歡迎閱讀!Java非同步回撥機制例項解析一、什麼是回撥軟體模組之間總是存在著一定的介面,從呼叫方式上,可以把他們分為三類:同步呼叫、回撥和非同步呼叫。回撥是一種...
-
計算機二級JAVA考試構建JAVA程式2017
很多人一見到說要程式設計就以為很難,其實只有一點一滴學知識點也不難,下面是小編整理的計算機二級JAVA考試構建JAVA程式介紹,歡迎閱讀!第一個javaapplicationjava程式分為javaapplication(java應用程式)和javaapplet(java小應用程式)兩種。下面讓我們編寫一個java應...