超碰免费人人操|国产视频二区久久艹人人操|欧美激情第一页在线|久热最新无码中文视频|91精品国际成人|亚洲成人精品在线视频青青草|久草免费高清完整在线观看|你懂的AV在线日本黄网页|国产黄色AV日韩女同网|欧美成人色区导航片av

  • <label id="4q4yp"></label>
  • Java泛型是什么

    時(shí)間:2025-09-20 05:18:42 java語言

    Java泛型是什么

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

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

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

      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>

      結(jié)合上面的泛型定義,我們知道在List中,String是類型實(shí)參,也就是說,相應(yīng)的List接口中肯定含有類型形參。且get()方法的返回結(jié)果也直接是此形參類型(也就是對應(yīng)的傳入的類型實(shí)參)。下面就來看看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表示類型形參,可以接收具體的類型實(shí)參,并且此接口定義中,凡是出現(xiàn)E的地方均表示相同的接受自外部的類型實(shí)參。

      自然的,ArrayList作為List接口的實(shí)現(xiàn)類,其定義形式是:

      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泛型是什么】相關(guān)文章:

    講解Java的泛型01-18

    java泛型方法11-21

    java泛型方法推薦11-12

    java編譯器的泛型09-28

    Java的泛型擦除和運(yùn)行時(shí)泛型信息獲取10-07

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

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

    java布爾型介紹03-18

    Java是什么01-12