<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Java的基本使用之泛型

      1、泛型的定義

      泛型就是定義一種模板,例如 ArrayList<T>,然后就可以為用到的類創(chuàng)建對(duì)應(yīng)的 ArrayList<類型>。泛型的作用就是編寫模板代碼來適應(yīng)任意類型,然后我們就可以使用泛型來限制集合只可以存入某種類型的數(shù)據(jù)。

      //下面定義了一種模板,即泛型。T可以是任何class
      public class ArrayList<T> {
          private T[] array;
          private int size;
          public void add(T e) {...}
          public void remove(int index) {...}
          public T get(int index) {...}
      }
      
      //編寫一次模版,可以創(chuàng)建任意類型的ArrayList,如下:
      // 創(chuàng)建只可以存儲(chǔ)String的ArrayList:
      ArrayList<String> strList = new ArrayList<String>();
      // 創(chuàng)建只可以存儲(chǔ)Float的ArrayList:
      ArrayList<Float> floatList = new ArrayList<Float>();
      // 創(chuàng)建只可以存儲(chǔ)Person的ArrayList:
      ArrayList<Person> personList = new ArrayList<Person>();

      編譯器會(huì)針對(duì)類型作檢查,這樣一來,既實(shí)現(xiàn)了編寫一次,萬能匹配,又通過編譯器保證了類型安全:這就是泛型。

      Java 中的泛型只在編譯階段生效。 

       

      2、使用泛型

      泛型使用代碼示例:

      List<String> list = new ArrayList<String>();
      list.add("Hello");
      String first = list.get(0);
      
      List<Number> list = new ArrayList<Number>();
      list.add(new Integer(123));
      list.add(new Double(12.34));
      Number first = list.get(0);
      Number second = list.get(1);

      編譯器如果能自動(dòng)推斷出泛型類型,就可以省略后面的泛型類型:

      List<Number> list = new ArrayList<Number>();
      
      //編譯器看到泛型類型List<Number>就可以自動(dòng)推斷出后面的ArrayList<T>的泛型類型必須是ArrayList<Number>,因此,可以把代碼簡寫為: List<Number> list = new ArrayList<>();

       

      3、編寫泛型類

      通常來說,泛型類一般用在集合類中,例如ArrayList<T>,我們很少需要編寫泛型類。但如果我們確實(shí)需要編寫一個(gè)泛型,可以按照下面步驟進(jìn)行編寫:

      //先寫一個(gè)類
      public class Pair {
          private String first;
          public Pair(String first) {
          }
          public String getFirst() {
              return first;
          }
      }
      
      //然后將特定類型轉(zhuǎn)換成T,即可編寫一個(gè)泛型
      public class Pair<T> {
          private T first;
          public Pair(T first) {
              this.first = first;
          }
          public T getFirst() {
              return first;
          }
      }
      Pair<String> t1 = new Pair<String>();    //在new Pair的時(shí)候指定泛型的類型String
      String s = t1.getFirst();    //在使用的時(shí)候就只能使用String類型

       

      4、泛型的通配符

      class Person {
          public void (List<?> list){   //test方法需要一個(gè)list集合的參數(shù),但是不確定該list集合存的數(shù)的類型,此時(shí)可以用通配符,表示任何類型的數(shù)據(jù)都可以
      
          }
      }
      
      //使用
      Person p = new Person();
      List<Stiring> list = new List();
      p.test(list);
      
      List<Integer> list2 = new List();
      p.test(list2)

       

      <? extends Person>  //(無窮小, Person]   只允許放入Person或者Person的子類
      
      <? super Person>    //[Person, 無窮大)   只允許放入Person或者Person的父類
      
      <? extends Comparable>  //只允許放入實(shí)現(xiàn)了Comparable接口的實(shí)現(xiàn)類
      
      <? extends 接口名>  //只允許放入實(shí)現(xiàn)了該接口的實(shí)現(xiàn)類
      class Person {
           public void Test(List<? extends Animal> list) {}  //表示作為參數(shù)的集合,集合中只能存儲(chǔ)Animal或者Animal的子類的實(shí)例對(duì)象
      }

       

      posted @ 2020-01-02 15:33  wenxuehai  閱讀(237)  評(píng)論(0)    收藏  舉報(bào)
      //右下角添加目錄
      主站蜘蛛池模板: 日本道之久夂综合久久爱| 亚洲色偷偷偷网站色偷一区| 婷婷色综合视频在线观看| 欧美日韩国产va在线观看免费| 日韩中文字幕亚洲精品| 少妇高潮潮喷到猛进猛出小说 | 丰满人妻被黑人猛烈进入| 久久国产精品成人免费| 亚洲中少妇久久中文字幕| 安丘市| 日本无产久久99精品久久| 朝阳市| 久久精品一本到99热免费| 91亚洲国产三上悠亚在线播放| 亚洲AV日韩AV永久无码电影| 韩国美女福利视频一区二区| 日日爽日日操| 国产欧亚州美日韩综合区| 久久精品国产福利一区二区 | 久热中文字幕在线| 日日噜噜大屁股熟妇| 小嫩批日出水无码视频免费 | 女人裸体性做爰视频| 国产精品护士| 黄色三级亚洲男人的天堂| 日韩高清砖码一二区在线| 综合色一色综合久久网| 狼人大伊人久久一区二区| 国产中文字幕精品视频| 国产欧美日韩在线在线播放| 国产在线精品欧美日韩电影| av中文字幕国产精品| 欧美猛少妇色xxxxx猛叫| 欧美激欧美啪啪片| 午夜在线观看成人av| 国产成人精品免费视频大全| 国产精品一区在线蜜臀| 高清自拍亚洲精品二区| 色九月亚洲综合网| av偷拍亚洲一区二区三区| 成人片在线看无码不卡|