色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Java 泛型全解析

瀏覽:2日期:2022-08-26 08:17:37

泛型簡(jiǎn)介

什么是泛型?

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

為什么要使用泛型?

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

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

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

泛型應(yīng)用類型

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

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

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

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

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

無(wú)界限定通配符

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

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

上屆界限定通配符

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

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

下屆限定通配符

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

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

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

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

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

總結(jié)(Summary)

本小節(jié)對(duì)泛型的定義,應(yīng)用場(chǎ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)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 免费欧洲毛片a级视频无风险 | 韩国美女高清爽快一级毛片 | 国产精品99精品久久免费 | 老司机亚洲精品影院 | 全部孕妇毛片 | 大陆高清自拍 | 亚洲欧洲日韩在线 | 精品一区二区三区在线视频 | 日本二级毛片免费 | 久久久久久亚洲精品中文字幕 | 视频在线一区二区 | 中文国产成人精品少久久 | 国产精品6 | 免费观看成人毛片 | 国产成人一区二区三区免费观看 | 免费一级a毛片在线播 | 一级毛片免费播放 | 国产乱码精品一区二区三区中 | 一级特黄一欧美俄罗斯毛片 | 99久久综合狠狠综合久久一区 | 国产成人精品视频免费 | 欧美成人久久久免费播放 | 亚洲日本va | 亚洲精品成人7777在线观看 | 欧美一级录像 | 亚洲码一区二区三区 | 久久精品免看国产 | 国产精品久久国产三级国电话系列 | 日韩精品一区二区三区视频网 | 国产女王s调视频vk 国产女王vk | 福利91| 日韩精品视频一区二区三区 | 国产午夜视频 | 久草在线视频中文 | 91免费永久国产在线观看 | 亚洲精品午夜在线观看 | 乱子伦农村xxxx | 伊人久久在线视频 | 国产福利最新手机在线观看 | 国产伦精品一区二区三区网站 | 亚洲免费不卡 |