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

這個(gè)Java泛型不太正經(jīng)

 更新時(shí)間:2022年01月06日 16:40:17   作者:執(zhí)久呀  
這篇文章主要為大家介紹了Java泛型,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助<BR>

一、前言

泛型在java中有很重要的地位,在實(shí)際開發(fā)中用處也很大。

二、泛型

泛型:是jdk5中引入的特性,他提供編譯是類型是類型的安全檢測(cè)機(jī)制,這個(gè)機(jī)制允許在編譯時(shí)檢測(cè)到非法的類型,它的本質(zhì)是參數(shù)化類型,也就是所操作的數(shù)據(jù)類型不變指定為一個(gè)參數(shù)

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

泛型的類型:

①:泛型類

②:泛型方法 

③:泛型接口

三、泛型定義的格式:

<類型> :指定一種類型的格式,這里的類型可以看成是形參。

<類型1,類型2...>:指定多種類型的格式,多種類型之間用逗號(hào)隔開,這里的類型類型1,類型2可以看成是形參,將來具體調(diào)用的時(shí)候的參數(shù)看成是實(shí)參,這里的泛型只能是引用類型。

什么是引用類型?

除了八大基本類型其他的都是引用類型,如基本類型對(duì)應(yīng)的包裝類

  • boolean -->Boolean
  • char --->Character
  • byte -->Byte
  • short -->Short
  • int -->Integer
  • long -->Long
  • float -->Float
  • double -->Double

泛型的好處是:  

  • 把運(yùn)行得問題提前到編譯時(shí)期   
  • 避免了強(qiáng)制轉(zhuǎn)換

沒指定類型默認(rèn)是Object類型

舉個(gè)例子,當(dāng)沒有使用泛型時(shí):

import java.util.HashMap;
import java.util.Map;
import java.util.Set;
 
public class 泛型Demo {
    public static void main(String[] args) {
        //創(chuàng)建一個(gè)對(duì)象
        Map map=new HashMap();
        //添加數(shù)據(jù)
        map.put(1, "張三");
        map.put(2, "李四");
        map.put(3,"王五");
        map.put(5, 6);//加了不一樣的類型數(shù)據(jù)
 
        //鍵的集合
        Set keySet=map.keySet();
        //鍵找值
        for(Object key: keySet){
            String value=(String)map.get(key);
            System.out.println(key+":"+value);
        }
 
 
    }
}

報(bào)了一個(gè)類型轉(zhuǎn)換異常(int會(huì)自動(dòng)轉(zhuǎn)化成Integer),Integer不能轉(zhuǎn)為String

Exception in thread "main" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
 

 此時(shí)泛型的好處就體現(xiàn)出來了,將運(yùn)行時(shí)會(huì)出現(xiàn)的錯(cuò)誤拉到了編譯期間。

 

 當(dāng)然也可以在輸出是采用Object接收

        //鍵的集合
        Set keySet=map.keySet();
        //鍵找值
        for(Object key: keySet){
           Object value=map.get(key);
          //  String value=(String)map.get(key);
            System.out.println(key+":"+value);
        }

這樣也可以得到想要的結(jié)果。

四、泛型類

泛型類的定義格式:

修飾符 class 類名<類型> { }

舉例:

public class Generic<T>{}

這里的T可以使任意標(biāo)識(shí),常見的如T、E、K、V等形式常用于表示泛型。

泛型類下

public class Generic<T> {
    //定義一個(gè)變量,提供get set方法
    private T t;
    public T getT(){
        return t;
    }
    public void SetT(T t){
        this.t=t;
    }
    
}

測(cè)試類下

public class GenericDemo {
    public static void main(String[] args) {
        Generic<String> g1=new Generic<>();
        g1.SetT("章三");
        System.out.println(g1.getT());
        System.out.println("------------------");
        Generic<Integer> g2=new Generic<>();
        g2.SetT(100);
        System.out.println(g2.getT());
    }
}

運(yùn)行結(jié)果

 定義這個(gè)泛型類的好處就是可以在測(cè)試中輸入各種你想要的類型。

五、泛型方法

定義泛型方法的格式:

修飾符 <類型> 返回值類型 方法名 (類型 類型名)

舉例:

public <T> void show (T t){}

泛型方法

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

泛型方法測(cè)試下:

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

運(yùn)行結(jié)果

 泛型方法比泛型類方便許多,直接在這使用即可,可以用個(gè)中類型的參數(shù)

六、泛型接口

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

舉例:

public interface Generic&lt;T&gt;{}

既然是接口那就得定義一個(gè)類 去實(shí)現(xiàn)這個(gè)接口

泛型接口:

public interface Generic<T>{}

 GenricImp類下:

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

 GenricDemo類下:

public class GenricDemo{
   public static void main(String[]args){
        Generic<String> g1=new GenericImp<String>();
       g1.show("張三");
   Generic<Integer> g2=new GenericImp<Integer>();
       g2.show(100);
   }
}

七、類型通配符

<? extends T>上限通配,?表示是T的一個(gè)未知子類。


<? super T>下限通配,?表示是T的一個(gè)未知父類。

總結(jié)

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • IDEA配置maven環(huán)境的詳細(xì)教程(Unable to import maven project報(bào)錯(cuò)問題的解決)

    IDEA配置maven環(huán)境的詳細(xì)教程(Unable to import maven project報(bào)錯(cuò)問題的解決)

    這篇文章主要介紹了IDEA配置maven環(huán)境的詳細(xì)教程(Unable to import maven project問題的解決),本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-06-06
  • Java源碼分析:Guava之不可變集合ImmutableMap的源碼分析

    Java源碼分析:Guava之不可變集合ImmutableMap的源碼分析

    今天給大家?guī)淼氖顷P(guān)于Java源碼的相關(guān)知識(shí),文章圍繞著Java ImmutableMap展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下,希望能給你帶來幫助
    2021-06-06
  • Java實(shí)現(xiàn)獲取前、后N天日期的函數(shù)分享

    Java實(shí)現(xiàn)獲取前、后N天日期的函數(shù)分享

    本文給大家分享的是使用java實(shí)現(xiàn)的獲取當(dāng)前日期前后N天的函數(shù),非常的簡(jiǎn)單實(shí)用,有需要的小伙伴可以參考下。
    2015-03-03
  • 如何理解和運(yùn)用ClassLoader

    如何理解和運(yùn)用ClassLoader

    這篇文章主要介紹了如何理解和運(yùn)用 ClassLoader,幫助大家更好的理解和使用JVM,感興趣的朋友可以了解下
    2021-01-01
  • 解決無法解析javax.servlet的方法

    解決無法解析javax.servlet的方法

    最近在創(chuàng)建一個(gè)servlet時(shí),自動(dòng)生成的代碼中出現(xiàn)servlet無法解析的提示,令我無法正常使用servlet里的方法,在對(duì)各個(gè)步驟進(jìn)行查看后,發(fā)現(xiàn)了問題所在,需要的朋友可以參考下
    2021-05-05
  • Java實(shí)現(xiàn)簡(jiǎn)單的郵件發(fā)送功能

    Java實(shí)現(xiàn)簡(jiǎn)單的郵件發(fā)送功能

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)簡(jiǎn)單的郵件發(fā)送功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • Java彈簧布局管理器使用方法詳解

    Java彈簧布局管理器使用方法詳解

    這篇文章主要介紹了Java彈簧布局管理器使用方法詳解,需要的朋友可以參考下
    2017-09-09
  • idea將maven項(xiàng)目改成Spring boot項(xiàng)目的方法步驟

    idea將maven項(xiàng)目改成Spring boot項(xiàng)目的方法步驟

    這篇文章主要介紹了idea將maven項(xiàng)目改成Spring boot項(xiàng)目的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • 詳解Android開發(fā)中Fragment的使用

    詳解Android開發(fā)中Fragment的使用

    這篇文章主要介紹了詳解Android開發(fā)中Fragment的使用,包括Java代碼中調(diào)用Fragment的方法,需要的朋友可以參考下
    2015-07-07
  • SpringMVC @GetMapping注解路徑?jīng)_突問題解決

    SpringMVC @GetMapping注解路徑?jīng)_突問題解決

    MD5對(duì)密碼進(jìn)行加密存儲(chǔ)是常見的一種加密方式,本文主要介紹了Java雙重MD5加密實(shí)現(xiàn)安全登錄,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07

最新評(píng)論

龙岩市| 万年县| 濮阳县| 田东县| 滕州市| 乐都县| 孟津县| 班玛县| 宁陵县| 米易县| 平罗县| 丰宁| 黑河市| 江西省| 普兰店市| 潢川县| 开封市| 临海市| 莆田市| 芜湖市| 隆尧县| 裕民县| 高青县| 左权县| 贡觉县| 沂水县| 杨浦区| 留坝县| 白玉县| 锡林浩特市| 辽中县| 和田县| 宁乡县| 郸城县| 永寿县| 金川县| 翼城县| 凤台县| 定结县| 井冈山市| 安泽县|