欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java泛型常用通配符實(shí)例解析

 更新時(shí)間:2020年01月03日 12:02:33   作者:思思博士  
這篇文章主要介紹了java泛型常用通配符實(shí)例解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

這篇文章主要介紹了java泛型常用通配符實(shí)例解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

今天在看ArrayList原碼是看到這樣的一個(gè)符號(hào),好奇怪。

?表示通配符,表示的意思是匹配E或E的子類,具體類型未知。

1.限定通配符

編寫一個(gè)類似于ArrayList的動(dòng)態(tài)數(shù)據(jù)

public class Gys<T> {
  private final static int default_capacity =10;
  private int endIndex =0;
  private Object[] elemts;

  public Gys() {
    this.elemts = new Object[default_capacity];
  }

  public void add(T t){
    if(elemts.length-1< endIndex){
      int newCapcti= default_capacity *2;
      elemts= Arrays.copyOf(elemts,newCapcti);
    }
    elemts[endIndex++]=t;
  }

  public void addAll(Gys<T> cs){
    for(int i=0;i<cs.size();i++){
      add(cs.get(i));
    }
  }

  public int size(){
    return endIndex;
  }

  public T get(int i){
    if(i< endIndex){
      return (T) elemts[i];
    }
    throw new RuntimeException("索引超出界限");
  }


  public static void main(String[] args) {
    Gys<Number> gys=new Gys<>();
    gys.add(25);
    Gys<Integer> gys2=new Gys<>();
    gys2.add(2);
    gys.addAll(gys2);
  }
}

修改上面的代碼,將addAll參數(shù)改成如下

 public void addAll(Gys<? extend T> cs){
    for(int i=0;i<cs.size();i++){
      add(cs.get(i));
    }
}

這個(gè)時(shí)候代碼編譯通過了。并且能夠正常的訪問其中的元素。

2.無(wú)限定通配符。

改寫上面的addAll方法代碼。

 public void addAll(Gys<?> cs){
    for(int i=0;i<cs.size();i++){
      add(cs.get(i));
    }
  }

上面的代碼編譯不通過。?表示類型不確定,從安全角度考慮無(wú)限定的泛型,無(wú)法進(jìn)行寫操作。
但是可以這樣使用。

/**
   *判斷元素是否存在
   */
  public boolean isHas(Gys<?> gys,Object elemt){
    for(int i=0;i<gys.size();i++){
      if(gys.get(i).equals(elemt)){
        return true;
      }
    }
    return false;
  }

除了<? extend E>用法;還有<? super E>的用法,表示類型是E或E的父類。不過多介紹了,用的少。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Spring Boot JDBC 連接數(shù)據(jù)庫(kù)示例

    Spring Boot JDBC 連接數(shù)據(jù)庫(kù)示例

    本篇文章主要介紹了Spring Boot JDBC 連接數(shù)據(jù)庫(kù)示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2017-02-02
  • 聊聊Redis的單線程模型

    聊聊Redis的單線程模型

    Redis是單線程,主要是指Redis的網(wǎng)絡(luò)IO和讀寫是由一個(gè)線程來(lái)完成的,但Redis的其他功能,比如持久化、異步刪除、集群數(shù)據(jù)同步等,其實(shí)是由額外的線程執(zhí)行的。這不是本文討論的重點(diǎn),有個(gè)印象即可
    2022-12-12
  • 如何調(diào)試報(bào)表插件

    如何調(diào)試報(bào)表插件

    在項(xiàng)目開發(fā)過程中插件調(diào)試非常的麻煩,需要修改里面的代碼,編譯出class,需要重新打包插件。然后把之前的刪除,重新安裝最新的。調(diào)試過程比較繁瑣,而且不能調(diào)試,十分的不方便,這篇文章主要介紹的是調(diào)試報(bào)表插件的方法,需要的朋友可以參考下
    2015-07-07
  • Java基礎(chǔ)篇之HashMap指定初始值

    Java基礎(chǔ)篇之HashMap指定初始值

    這篇文章主要給大家介紹了關(guān)于Java基礎(chǔ)篇之HashMap指定初始值的相關(guān)資料,HashMap是Java中常用的數(shù)據(jù)結(jié)構(gòu),它提供了高效的鍵值對(duì)存儲(chǔ)和查詢功能,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-12-12
  • Spring概述和快速構(gòu)建的方式

    Spring概述和快速構(gòu)建的方式

    Spring是一個(gè)輕量級(jí)的控制反轉(zhuǎn)(IoC)和面向切面(AOP)的容器(框架),Spring使用基本的JavaBean來(lái)完成以前只可能由EJB完成的事情,本文給大家介紹spring概述和快速構(gòu)建方式,一起看看吧
    2021-06-06
  • httpclient 請(qǐng)求http數(shù)據(jù),json轉(zhuǎn)map的實(shí)例

    httpclient 請(qǐng)求http數(shù)據(jù),json轉(zhuǎn)map的實(shí)例

    下面小編就為大家?guī)?lái)一篇httpclient 請(qǐng)求http數(shù)據(jù),json轉(zhuǎn)map的實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2016-12-12
  • Java裝飾器設(shè)計(jì)模式初探

    Java裝飾器設(shè)計(jì)模式初探

    這篇文章主要為大家詳細(xì)介紹了Java裝飾器設(shè)計(jì)模式,感興趣的小伙伴們可以參考一下
    2016-09-09
  • Keycloak各種配置及API的使用說明

    Keycloak各種配置及API的使用說明

    這篇文章主要介紹了Keycloak各種配置及API的使用說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • SpringBoot自動(dòng)配置實(shí)現(xiàn)流程詳細(xì)分析

    SpringBoot自動(dòng)配置實(shí)現(xiàn)流程詳細(xì)分析

    這篇文章主要介紹了SpringBoot自動(dòng)配置原理分析,SpringBoot是我們經(jīng)常使用的框架,那么你能不能針對(duì)SpringBoot實(shí)現(xiàn)自動(dòng)配置做一個(gè)詳細(xì)的介紹。如果可以的話,能不能畫一下實(shí)現(xiàn)自動(dòng)配置的流程圖。牽扯到哪些關(guān)鍵類,以及哪些關(guān)鍵點(diǎn)
    2022-12-12
  • 使用java采集京東商城區(qū)劃數(shù)據(jù)示例

    使用java采集京東商城區(qū)劃數(shù)據(jù)示例

    這篇文章主要介紹了java采集京東的全國(guó)區(qū)劃數(shù)據(jù)示例,保存成json形式,如想轉(zhuǎn)換到數(shù)據(jù)庫(kù)只需反序列化為對(duì)象保存到數(shù)據(jù)庫(kù)即可
    2014-03-03

最新評(píng)論