<pre id="bbfd9"><del id="bbfd9"><dfn id="bbfd9"></dfn></del></pre>

          <ruby id="bbfd9"></ruby><p id="bbfd9"><mark id="bbfd9"></mark></p>

          <p id="bbfd9"></p>

          <p id="bbfd9"><cite id="bbfd9"></cite></p>

            <th id="bbfd9"><form id="bbfd9"><dl id="bbfd9"></dl></form></th>

            <p id="bbfd9"><cite id="bbfd9"></cite></p><p id="bbfd9"></p>
            <p id="bbfd9"><cite id="bbfd9"><progress id="bbfd9"></progress></cite></p>

            Java泛型是什么

            時間:2025-09-20 05:18:42 java語言

            Java泛型是什么

              導語:泛型,即“參數化類型”。一提到參數,最熟悉的就是定義方法時有形參,然后調用此方法時傳遞實參。那么參數化類型怎么理解呢?讓我們了解一下吧!

              顧名思義,就是將類型由原來的具體的類型參數化,類似于方法中的變量參數,此時類型也定義成參數形式(可以稱之為類型形參),然后在使用/調用時傳入具體的類型(類型實參)。

              看著好像有點復雜,首先我們看下上面那個例子采用泛型的寫法。

              1 public class GenericTest {

              2

              3   public static void main(String[] args) {

              4     /*

              5     List list = new ArrayList();

              6     list.add("qqyumidi");

              7     list.add("corn");

              8     list.add(100);

              9     */

              10

              11     Listlist = new ArrayList();

              12     list.add("qqyumidi");

              13     list.add("corn");

              14     /pic/pic/p>

              15

              16     for (int i = 0; i < list.size(); i++) {

              17       String name = list.get(i); /pic/p>

              18       System.out.println("name:" + name);

              19     }

              20   }

              21 }

              采用泛型寫法后,在/pic/pic/string>

              結合上面的泛型定義,我們知道在List中,String是類型實參,也就是說,相應的List接口中肯定含有類型形參。且get()方法的返回結果也直接是此形參類型(也就是對應的傳入的類型實參)。下面就來看看List接口的的具體定義:

              1 public interface Listextends Collection{

              2

              3   int size();

              4

              5   boolean isEmpty();

              6

              7   boolean contains(Object o);

              8

              9   Iteratoriterator();

              10

              11   Object[] toArray();

              12

              13T[] toArray(T[] a);

              14

              15   boolean add(E e);

              16

              17   boolean remove(Object o);

              18

              19   boolean containsAll(Collection

              20

              21   boolean addAll(Collection c); c); c); 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   ListIteratorlistIterator();

              48

              49   ListIteratorlistIterator(int index);

              50

              51   ListsubList(int fromIndex, int toIndex);

              52 }

              我們可以看到,在List接口中采用泛型化定義之后,中的E表示類型形參,可以接收具體的類型實參,并且此接口定義中,凡是出現E的地方均表示相同的接受自外部的類型實參。

              自然的,ArrayList作為List接口的實現類,其定義形式是:

              1 public class ArrayListextends AbstractList

              2     implements List, RandomAccess, Cloneable, java.io.Serializable {

              3

              4   public boolean add(E e) {

              5     ensureCapacityInternal(size + 1); /pic/p>

              6     elementData[size++] = e;

              7     return true;

              8   }

              9

              10   public E get(int index) {

              11     rangeCheck(index);

              12     checkForComodification();

              13     return ArrayList.this.elementData(offset + index);

              14   }

              15

              16   /pic/p>

              17

              18 }

              由此,我們從源代碼角度明白了為什么/pic/pic/p>

            【Java泛型是什么】相關文章:

            講解Java的泛型01-18

            java泛型方法11-21

            java泛型方法推薦11-12

            java編譯器的泛型09-28

            Java的泛型擦除和運行時泛型信息獲取10-07

            初步理解Java的泛型特性分享09-01

            Java8自定義帶泛型的函數式接口02-13

            java布爾型介紹03-18

            Java是什么01-12

                    <pre id="bbfd9"><del id="bbfd9"><dfn id="bbfd9"></dfn></del></pre>

                    <ruby id="bbfd9"></ruby><p id="bbfd9"><mark id="bbfd9"></mark></p>

                    <p id="bbfd9"></p>

                    <p id="bbfd9"><cite id="bbfd9"></cite></p>

                      <th id="bbfd9"><form id="bbfd9"><dl id="bbfd9"></dl></form></th>

                      <p id="bbfd9"><cite id="bbfd9"></cite></p><p id="bbfd9"></p>
                      <p id="bbfd9"><cite id="bbfd9"><progress id="bbfd9"></progress></cite></p>
                      飘沙影院