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

Java基礎(chǔ)泛型詳情

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

一、泛型

概述:

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

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

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

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

定義格式:

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

泛型的優(yōu)點:

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

二、泛型類

定義格式:

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

范例:public class Gneneric{}

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

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

泛型類

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{}

實現(xiàn)格式:

泛型接口

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

泛型接口實現(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ù)個數(shù)可變,用作方法的形參出現(xiàn),那么方法參數(shù)個數(shù)就是可變的了

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

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

注意事項:

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

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

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

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

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

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

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

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

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

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

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

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

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

相關(guān)文章

  • java的接口解耦方式

    java的接口解耦方式

    這篇文章主要介紹了java的接口解耦方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • 詳解Spring DI依賴注入的方式和類型

    詳解Spring DI依賴注入的方式和類型

    這篇文章主要介紹了詳解Spring DI依賴注入的方式和類型,DI是由容器動態(tài)的將某個依賴關(guān)系注入到組件之中。依賴注入的目的并非為軟件系統(tǒng)帶來更多功能,而是為了提升組件重用的頻率,并為系統(tǒng)搭建一個靈活、可擴展的平臺,需要的朋友可以參考下
    2023-05-05
  • SpringCloud+Redis實現(xiàn)Api接口限流防止惡意刷接口

    SpringCloud+Redis實現(xiàn)Api接口限流防止惡意刷接口

    接口限流是為了保護(hù)系統(tǒng)和服務(wù),防止因為過多的請求而崩潰,本文主要介紹了SpringCloud+Redis實現(xiàn)Api接口限流防止惡意刷接口,具有一定的參考價值,感興趣的可以了解一下
    2024-03-03
  • 詳解JAVA動態(tài)代理

    詳解JAVA動態(tài)代理

    這篇文章主要介紹了JAVA動態(tài)代理,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • 利用枚舉法求直方圖中最大矩形面積的方法實例

    利用枚舉法求直方圖中最大矩形面積的方法實例

    今天小編就為大家分享一篇關(guān)于利用枚舉法求直方圖中最大矩形面積的方法實例,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-02-02
  • SpringBoot加載配置6種方式分析

    SpringBoot加載配置6種方式分析

    這篇文章主要介紹了SpringBoot加載配置6種方式分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • Java中Calendar時間操作常用方法詳解

    Java中Calendar時間操作常用方法詳解

    這篇文章主要為大家詳細(xì)介紹了Java中Calendar時間操作常用方法,calendar中set方法和靜態(tài)屬性帶來的一些坑,感興趣的小伙伴們可以參考一下
    2016-05-05
  • mybatis空值插入處理的解決方法

    mybatis空值插入處理的解決方法

    本文主要介紹了mybatis空值插入處理的解決方法,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Java服務(wù)器宕機的解決方法論

    Java服務(wù)器宕機的解決方法論

    這篇文章主要介紹了Java服務(wù)器宕機的解決方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Java并發(fā) synchronized鎖住的內(nèi)容解析

    Java并發(fā) synchronized鎖住的內(nèi)容解析

    這篇文章主要介紹了Java并發(fā) synchronized鎖住的內(nèi)容解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-09-09

最新評論