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

Java基礎(chǔ)泛型詳情

 更新時(shí)間:2022年04月01日 11:48:55   作者:再美不及姑娘你  
這篇文章主要介紹了Java基礎(chǔ)泛型詳情,泛型是JDK5中引入的特性,它提供了編譯時(shí)類型安全檢測機(jī)制,該機(jī)制允許在編譯時(shí)檢測到非法的類型,下面文章的詳細(xì)介紹,需要的朋友可以參考一下

一、泛型

概述:

泛型是JDK5中引入的特性,它提供了編譯時(shí)類型安全檢測機(jī)制,該機(jī)制允許在編譯時(shí)檢測到非法的類型

本質(zhì)上是參數(shù)化類型,也就是說所操作的數(shù)據(jù)類型被指定為一個(gè)參數(shù)

參數(shù)化類型:就是將類型由原來的具體的類型參數(shù)化,然后在使用/調(diào)用時(shí)傳入具體的參數(shù)

這種參數(shù)類型可以用在類、方法和接口中,分別被稱為泛型類、泛型方法、泛型接口

定義格式:

  • 1.<類型>:指定一種類型的格式,這里的類型可以看作是形參
  • 2.<類型1,類型2....>:指定多種類型的格式,多種類型之間由,隔開,這里的類型可以看作是形參
  • 3.將來具體調(diào)用時(shí)給定的類型可以看作是實(shí)參,并且實(shí)參的類型只能是引用類型

泛型的優(yōu)點(diǎn):

  • 1.把運(yùn)行時(shí)期的問題提前到了編譯時(shí)期,更容易發(fā)現(xiàn)并處理
  • 2.避免了強(qiáng)制類型轉(zhuǎn)換

二、泛型類

定義格式:

格式:修飾符 class 類名<T>{}

范例:public class Gneneric{}

此處的T可以隨便寫為任意標(biāo)識,常見的如T、E、K、V等形式的參數(shù)經(jīng)常用于表示泛型

當(dāng)一個(gè)類使用泛型后,類中的成員變量就不局限于一種類型了,只要在用的時(shí)候聲明一下是什么類型的即可

泛型類

public class Generic<T> {
 ?  private T t;
?
 ?  public T getT() {
 ? ? ?  return t;
 ?  }
?
 ?  public void setT(T t) {
 ? ? ?  this.t = t;
 ?  }
}
?

調(diào)用格式:

Generic<String>g=new Generic<String>();
 ? ? ?  g.setT("102");

三、泛型方法

格式: 修飾符 <類型>void 方法名(類型 參數(shù)){}

范例:public void show(T t){}

泛型方法:

public class Generic{
 ?  public <T> void show(T t){
 ? ? ?  System.out.println(t);
 ?  }
}
?

調(diào)用格式:

public class GenericDemo {
 ?  public static void main(String[] args) {
 ? ? ?  Generic g = new Generic();
 ? ? ?  g.show("張三");
 ? ? ?  g.show(18);
 ? ? ?  g.show(true);
 ?  }
}

四、泛型接口

格式: 修飾符 interface 接口名 <T>{}

范例:public interface Gneneric{}

實(shí)現(xiàn)格式:

泛型接口

public interface Generic<T>{
 ?  void show(T t);
}
?

泛型接口實(shí)現(xiàn)類

public class GenericImpl<T> implements Generic<T>{
 ?  @Override
 ?  public void show(T t) {
 ? ? ?  System.out.println(t);
 ?  }
}

測試類

public class GenericDemo {
 ?  public static void main(String[] args) {
 ? ? ?  GenericImpl<String> g1=new GenericImpl<String>();
 ? ? ?  g1.show("張三");
 ? ? ?  GenericImpl<Integer>g2=new GenericImpl<Integer>();
 ? ? ?  g2.show(12);
 ? ? ?  GenericImpl<Boolean>g3=new GenericImpl<Boolean>();
 ? ? ?  g3.show(true);
 ? ? ?  Generic<Double>g4=new GenericImpl<Double>();
 ? ? ?  g4.show(13.15);
?
 ?  }
}
?

五、類型通配符<?>

為了表示各種泛型List的父類,可以使用類型通配符

  • 1.List<?>:表示元素類型位置的List,它的元素可以匹配任何的類型
  • 2.這種帶通配符的List僅代表它是各種泛型List的父類,并不能把元素添加到其中

如果說我們不希望List<?>是任何泛型List的父類,只希望它代表某一類泛型List的父類,可以使用類型通配符的上限

  • 1.類型通配符的上限:<?extends 類型>
  • 2.List<? extends Number>:他表示的類型是Number或者其子類型

同樣的我們也可以指定下限

  • 1.類型通配符下限:<? super 類型>
  • 2.List<? super Number>:表示的類型是Number或者其父類型

六、可變參數(shù)

可變參數(shù)又稱參數(shù)個(gè)數(shù)可變,用作方法的形參出現(xiàn),那么方法參數(shù)個(gè)數(shù)就是可變的了

格式:修飾符 返回值類型 方法名(數(shù)據(jù)類型... 變量名){}

范例:public static int sum(int...a){}

注意事項(xiàng):

  • 1.這里的變量是一個(gè)數(shù)組
  • 2.如果一個(gè)方法有多個(gè)參數(shù),并且包含可變參數(shù),那么可變參數(shù)要放在最后

可變參數(shù)的使用:

Arrays工具類中有一個(gè)靜態(tài)方法

public static <T>List<T>asList(T...a):返回由指定數(shù)組支持的固定大小的列表

返回的集合不能做增刪操作,可以做修改操作

List接口中有一個(gè)靜態(tài)方法:

public static <E>List<E>of(E...elements):返回包含任意數(shù)量元素的不可變列表

返回的集合不能做增刪改操作

Set接口中有一個(gè)靜態(tài)方法:

public static <E>Set<E>of(E...elements):返回一個(gè)包含任意數(shù)量元素的不可變集合

返回的集合不能做增刪操作,沒有修改方法

再給元素時(shí),不能給重復(fù)的元素

到此這篇關(guān)于Java基礎(chǔ)學(xué)習(xí)泛型的文章就介紹到這了,更多相關(guān)Java 泛型內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java程序包不存在的3種解決方法總結(jié)

    Java程序包不存在的3種解決方法總結(jié)

    包存在的,但是啟動(dòng)項(xiàng)目的時(shí)候提示包不存在,所以解決下,這篇文章主要給大家介紹了關(guān)于Java程序包不存在的3種解決方法,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-01-01
  • springboot集成screw反向生成數(shù)據(jù)庫說明文檔

    springboot集成screw反向生成數(shù)據(jù)庫說明文檔

    screw是一個(gè)一鍵式生成數(shù)據(jù)庫文檔的開源工具包,目前screw可以生成word、md和html格式類的文檔,本文主要來講講如何通過screw反向生成數(shù)據(jù)庫說明文檔,感興趣的可以了解下
    2025-01-01
  • Spring中的FactoryBean實(shí)現(xiàn)原理詳解

    Spring中的FactoryBean實(shí)現(xiàn)原理詳解

    這篇文章主要介紹了Spring中的FactoryBean實(shí)現(xiàn)原理詳解,spring中有兩種類型的Bean,一種是普通的JavaBean,另一種就是工廠Bean(FactoryBean),這兩種Bean都受Spring的IoC容器管理,但它們之間卻有一些區(qū)別,需要的朋友可以參考下
    2024-02-02
  • MyBatis-plus批量插入的通用方法使用

    MyBatis-plus批量插入的通用方法使用

    mybatis-plus的IService接口默認(rèn)提供saveBatch批量插入,也是唯一一個(gè)默認(rèn)批量插入,在數(shù)據(jù)量不是很大的情況下可以直接使用,本文帶你詳細(xì)了解MyBatis-plus 批量插入的通用方法及使用方法,需要的朋友可以參考一下
    2023-04-04
  • 利用consul在spring boot中實(shí)現(xiàn)分布式鎖場景分析

    利用consul在spring boot中實(shí)現(xiàn)分布式鎖場景分析

    這篇文章通過場景分析給大家介紹如何利用consul在spring boot中實(shí)現(xiàn)簡單的分布式鎖功能,代碼簡單易懂,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2021-09-09
  • 記一次線上SpringCloud Feign請求服務(wù)超時(shí)異常排查問題

    記一次線上SpringCloud Feign請求服務(wù)超時(shí)異常排查問題

    這篇文章主要介紹了記一次線上SpringCloud Feign請求服務(wù)超時(shí)異常排查問題,本項(xiàng)目與下游項(xiàng)目均注冊在Eureka上面,對這個(gè)1秒就超時(shí)感到很迷惑,于是開始查閱底層源碼之旅。需要的朋友可以參考下
    2022-01-01
  • SpringBoot Bean被加載時(shí)進(jìn)行控制

    SpringBoot Bean被加載時(shí)進(jìn)行控制

    很多時(shí)候我們需要根據(jù)不同的條件在容器中加載不同的Bean,或者根據(jù)不同的條件來選擇是否在容器中加載某個(gè)Bean,這就是Bean的加載控制,一般我們可以通過編程式或注解式兩種不同的方式來完成Bean的加載控制
    2023-02-02
  • 基于springboot的RestTemplate、okhttp和HttpClient對比分析

    基于springboot的RestTemplate、okhttp和HttpClient對比分析

    這篇文章主要介紹了基于springboot的RestTemplate、okhttp和HttpClient對比分析,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-09-09
  • SpringMVC @RequestBody Date類型的Json轉(zhuǎn)換方式

    SpringMVC @RequestBody Date類型的Json轉(zhuǎn)換方式

    這篇文章主要介紹了SpringMVC @RequestBody Date類型的Json轉(zhuǎn)換方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • Lombok如何快速構(gòu)建JavaBean與日志輸出

    Lombok如何快速構(gòu)建JavaBean與日志輸出

    這篇文章主要介紹了Lombok如何快速構(gòu)建JavaBean與日志輸出,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03

最新評論

和林格尔县| 普宁市| 伊吾县| 荆州市| 临泉县| 尼玛县| 安乡县| 唐河县| 诸城市| 罗田县| 大渡口区| 华池县| 安国市| 石柱| 梨树县| 高阳县| 拉孜县| 耿马| 永清县| 轮台县| 静宁县| 华阴市| 新龙县| 措美县| 遵义市| 固始县| 永寿县| 安新县| 保山市| 德兴市| 浮山县| 安多县| 青阳县| 土默特左旗| 太原市| 花莲县| 越西县| 太谷县| 宁南县| 西青区| 商城县|