最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java 泛型全解析

 更新時(shí)間:2020年08月27日 14:21:12   作者:Jason  
這篇文章主要介紹了Java 泛型的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)Java,感興趣的朋友可以了解下

泛型簡介

什么是泛型?

  • 參化類型,數(shù)是JDK1.5的新特性。(定義泛型時(shí)使用參數(shù)可以簡單理解為形參),例如List<E>,Map<K,V>
  • 編譯時(shí)的一種類型,此類型僅僅在編譯階段有效,運(yùn)行時(shí)無效.例如List<String>在運(yùn)行時(shí)String會(huì)被擦除,最終系統(tǒng)會(huì)認(rèn)為都是Object.

為什么要使用泛型?

泛型是進(jìn)行類型設(shè)計(jì)或方法定義時(shí)的一種約束規(guī)范,基于此規(guī)范可以:

  1. 提高編程時(shí)靈活性(有點(diǎn)抽象,后續(xù)結(jié)合實(shí)例理解)。
  2. 提高程序運(yùn)行時(shí)的性能。(在編譯階段解決一些運(yùn)行時(shí)需要關(guān)注的問題,例如強(qiáng)轉(zhuǎn))

說明:泛型應(yīng)用相對(duì)比較簡單,難點(diǎn)在泛型類或方法的設(shè)計(jì)上,通過這樣的設(shè)計(jì)如何對(duì)現(xiàn)有類進(jìn)行減法設(shè)計(jì),提高類或方法的通用性.

泛型應(yīng)用類型

泛型定義時(shí)常用方式有三種(可參考List<E>,Map<K,V)等接口定義):

  1. 泛型類:class 類名<泛型,…>{}
  2. 泛型接口:interface 接口名<泛型,…>{}
  3. 泛型方法: <泛型> 方法返回值類型 方法名(形參){}

泛型類定義及應(yīng)用

類泛型定義:(用于約束類中方法參數(shù)和方法返回值類型)

class Array<T>{//類泛型:類名<泛型>
  Object[] array=new Object[10];
  public void add(T t){}//通過類泛型約束方法參數(shù)類型
  public T get(int i){//通過類泛型約束方法返回值類型
    return (T)array[i];
  }
}

泛型接口定義及應(yīng)用

定義接口時(shí)指定泛型,用于約束接口方法參數(shù)類型以及方法返回值類

interface Task<Param,Result>{//思考map中的泛型Map<K,V>
  /**
   * 此方法用于執(zhí)行任務(wù)
   * @param arg 其類型由泛型參數(shù)Param決定
   * @return 其類型由泛型參數(shù)result決定
   */
  Result execute(Param arg);
}

泛型接口應(yīng)用實(shí)踐

class ConvertTask implements Task<String,Integer>{
  @Override
  public Integer execute(String arg) {
    // TODO Auto-generated method stub
    return Integer.parseInt(arg);
  }
}

泛型定義及應(yīng)用

泛型方法中的泛型僅僅應(yīng)用于當(dāng)前方法,主要應(yīng)用于一些靜態(tài)方法,當(dāng)然非靜態(tài)方法也可以應(yīng)用。

class ObjectFactory{
  /**泛型方法*/
  public static <T>T newInstance(Class<T> cls){
    return (T)cls.newInstance();
  }
}

泛型應(yīng)用通配符應(yīng)用

無界限定通配符

泛型無界通配符使用”?”進(jìn)行表示,可以代表一種任意參數(shù)類型(實(shí)參類型)。一般應(yīng)用于變量的定義。例如:Class<?> c1;

Class<?> c=Class.forName("java.util.Date");

上屆界限定通配符

泛型上屆限定符通過“<? extends 類型>”方式進(jìn)行實(shí)現(xiàn),主要用于方法參數(shù)或方法的返回值類型,例如:

static void doPrint(List<? extends CharSequence> list){
    System.out.println(list);
}

下屆限定通配符

泛型下屆限定符通過“<? super 類型>”方式進(jìn)行實(shí)現(xiàn),主要用于方法參數(shù)或方法的返回值類型,例如:

static void doPrint(Set<? super Integer> set){
    System.out.println(list);
}

泛型類型擦除實(shí)踐分析

泛型是編譯時(shí)的一種類型,在運(yùn)行時(shí)無效,運(yùn)行時(shí)候都會(huì)變成Object類型,例如:

ArrayList<String> list = new ArrayList<String>();
list.add("A");
//list.add(100);//直接不可以
//通過反射將100添加到集合
list.getClass().getMethod("add", Object.class).invoke(list, 100);
System.out.println(list);

總結(jié)(Summary)

本小節(jié)對(duì)泛型的定義,應(yīng)用場景,應(yīng)用類型以及泛型的類型擦出進(jìn)行了分析和實(shí)踐,希望在后續(xù)項(xiàng)目實(shí)踐中對(duì)泛型有一個(gè)更好的認(rèn)識(shí)。

以上就是Java 泛型全解析的詳細(xì)內(nèi)容,更多關(guān)于Java 泛型的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • SpringBoot整合Mybatis與druid實(shí)現(xiàn)流程詳解

    SpringBoot整合Mybatis與druid實(shí)現(xiàn)流程詳解

    這篇文章主要介紹了springboot整合mybatis plus與druid詳情,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的下伙伴可以參考一下
    2022-10-10
  • Java虛擬機(jī)GC日志分析

    Java虛擬機(jī)GC日志分析

    這篇文章主要介紹了Java虛擬機(jī)GC日志分析,分享了相關(guān)代碼示例,小編覺得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-02-02
  • SpringBoot實(shí)現(xiàn)熱部署的方式總結(jié)

    SpringBoot實(shí)現(xiàn)熱部署的方式總結(jié)

    所謂熱部署,就是在應(yīng)用正在運(yùn)行的時(shí)候升級(jí)軟件,卻不需要重新啟動(dòng)應(yīng)用,對(duì)于Java來說,熱部署就是在運(yùn)行時(shí)更新Java類文件,本文將深入探討SpringBoot有哪些方式可以實(shí)現(xiàn)熱部署,感興趣的朋友可以小編一探討學(xué)習(xí)
    2023-06-06
  • SpringBoot+Redis使用AOP防止重復(fù)提交的實(shí)現(xiàn)

    SpringBoot+Redis使用AOP防止重復(fù)提交的實(shí)現(xiàn)

    本文主要介紹了SpringBoot+Redis使用AOP防止重復(fù)提交的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • Java利用Netty時(shí)間輪實(shí)現(xiàn)延時(shí)任務(wù)

    Java利用Netty時(shí)間輪實(shí)現(xiàn)延時(shí)任務(wù)

    時(shí)間輪是一種可以執(zhí)行定時(shí)任務(wù)的數(shù)據(jù)結(jié)構(gòu)和算法。本文將為大家詳細(xì)講解一下Java如何利用Netty時(shí)間輪算法實(shí)現(xiàn)延時(shí)任務(wù),感興趣的小伙伴可以了解一下
    2022-08-08
  • Spring Boot項(xiàng)目中結(jié)合MyBatis實(shí)現(xiàn)MySQL的自動(dòng)主從切換功能

    Spring Boot項(xiàng)目中結(jié)合MyBatis實(shí)現(xiàn)MySQL的自動(dòng)主從切換功能

    這篇文章主要介紹了Spring Boot項(xiàng)目中結(jié)合MyBatis實(shí)現(xiàn)MySQL的自動(dòng)主從切換功能,本文分步驟給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧
    2025-04-04
  • java中的xxxable和xxxator使用及說明

    java中的xxxable和xxxator使用及說明

    這篇文章主要介紹了java中的xxxable和xxxator使用及說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • 詳解Java從工廠方法模式到 IOC/DI思想

    詳解Java從工廠方法模式到 IOC/DI思想

    工廠方法(Factory Method)模式的意義是定義一個(gè)創(chuàng)建產(chǎn)品對(duì)象的工廠接口,將實(shí)際創(chuàng)建工作推遲到子類當(dāng)中。核心工廠類不再負(fù)責(zé)產(chǎn)品的創(chuàng)建,這樣核心類成為一個(gè)抽象工廠角色,僅負(fù)責(zé)具體工廠子類必須實(shí)現(xiàn)的接口。本文將詳細(xì)介紹Java從工廠方法模式到 IOC/DI思想。
    2021-06-06
  • Java編程實(shí)現(xiàn)A*算法完整代碼

    Java編程實(shí)現(xiàn)A*算法完整代碼

    這篇文章主要介紹了Java編程實(shí)現(xiàn)A*算法完整代碼,簡單介紹了a星算法,然后分享了完整測試代碼,具有一定借鑒價(jià)值,需要的朋友可以參考下。
    2017-11-11
  • Json轉(zhuǎn)換工具類

    Json轉(zhuǎn)換工具類

    今天小編就為大家分享一篇關(guān)于Json轉(zhuǎn)換工具類,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-01-01

最新評(píng)論

固始县| 临安市| 松潘县| 田东县| 宾川县| 郯城县| 西林县| 钟祥市| 屏山县| 罗城| 休宁县| 达州市| 扎鲁特旗| 英德市| 重庆市| 东乌珠穆沁旗| 新郑市| 大悟县| 鄂州市| 翁源县| 大埔区| 大荔县| 双鸭山市| 盐山县| 兴和县| 阳高县| 隆德县| 安远县| 名山县| 桂林市| 行唐县| 开平市| 潞西市| 蛟河市| 宜昌市| 永兴县| 和田县| 金阳县| 梅河口市| 寿阳县| 沙雅县|