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

java的泛型你真的了解嗎

 更新時(shí)間:2022年03月29日 11:03:15   作者:White?Code  
這篇文章主要為大家詳細(xì)介紹了java的泛型,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助

泛型的概述和優(yōu)勢(shì)

泛型概述

泛型:是JDK5中引入的特性,可以在編譯階段約束操作的數(shù)據(jù)類型,并進(jìn)行檢查。
泛型的格式:<數(shù)據(jù)類型>; 注意:泛型只能支持引用數(shù)據(jù)類型。
集合體系的全部接口和實(shí)現(xiàn)類都是支持泛型的使用的。

泛型的好處:

統(tǒng)一數(shù)據(jù)類型。
把運(yùn)行時(shí)期的問(wèn)題提前到了編譯期間,避免了強(qiáng)制類型轉(zhuǎn)換可能出現(xiàn)的異常,因?yàn)榫幾g階段類型就能確定下來(lái)。

泛型可以在很多地方進(jìn)行定義:

類后面           -->    泛型類
方法申明上    -->   泛型方法
接口后面        -->  泛型接口

自定義泛型類

泛型類的概述

定義類時(shí)同時(shí)定義了  泛型的類  就是  泛型類。
泛型類的格式:修飾符 class 類名<泛型變量(只能是引用類型)>{  }
范例:public class MyArrayList<T> {  }
 此處泛型變量T可以隨便寫為任意標(biāo)識(shí),常見(jiàn)的如E、T、K、V等。

作用:編譯階段可以指 定數(shù)據(jù)類型**(必須是引用類型)**,類似于集合的作用。

課程案例導(dǎo)學(xué)

模擬ArrayList集合自定義一個(gè)集合MyArrayList集合,完成添加和刪除功能的泛型設(shè)計(jì)即可。

問(wèn)題1:泛型類的核心思想?

把出現(xiàn)泛型變量的地方全部替換成傳輸?shù)恼鎸?shí)數(shù)據(jù)類型

問(wèn)題2:泛型類的作用?

編譯階段約定操作的數(shù)據(jù)的類型,類似于集合的作用。

自定義泛型方法

泛型方法的概述

定義方法時(shí)同時(shí)定義了  泛型的方法  就是  泛型方法。
泛型方法的格式:修飾符 <泛型變量> 方法返回值 方法名稱(形參列表){}
范例: public <T> void show(T t) {    // <T>表示參數(shù)的類型,一般在public或者static的后面 
            }
作用:方法中可以使用泛型接收一切實(shí)際類型的參數(shù),方法更具備通用性。

課程案例導(dǎo)學(xué)

給你任何一個(gè)類型的數(shù)組,都能返回它的內(nèi)容。也就是實(shí)現(xiàn)Arrays.toString(數(shù)組)的功能!

public class GeneticDemo {
    public static void main(String[] args) {
        String[] names = {"lushimeng", "yangyinyu", "wangliang", "xigua", "xiangjia"};
        printArray(names);  // 把printArray方法中出現(xiàn)泛型的地方全部變化為String類型
        Character[] character = {'2', 'd', 'd', 'r'};
        printArray(character);  // 把printArray方法中出現(xiàn)泛型的地方全部變化為Character類型
        Integer[] ages = {23, 435, 56, 67, 67};
        printArray(ages);  // 把printArray方法中出現(xiàn)泛型的地方全部變化為Integer類型

    }

    public static <T> void printArray(T[] array){
        if(array != null){
            StringBuilder sb = new StringBuilder("[");
            for(int i = 0; i < array.length; i++){
                sb.append(array[i]).append(i != array.length - 1 ? ", ": "");  // StringBuilder的鏈?zhǔn)骄幊?
            }
            sb.append("]");
            System.out.println(sb);
        }else{
            System.out.println(array);
        }
    }
}

問(wèn)題1、泛型方法的核心思想:

把出現(xiàn)泛型變量的地方  全部替換   成傳輸?shù)恼鎸?shí)數(shù)據(jù)類型

問(wèn)題2、泛型方法的作用

方法中可以使用泛型接收一   切實(shí)際類型的參數(shù),方法更具備通用性

自定義泛型接口

泛型接口的概述

使用了泛型定義的接口就是泛型接口。
泛型接口的格式:修飾符 interface 接口名稱<泛型變量>{
                           }
范例: public interface Data<E>{}

課程案例導(dǎo)學(xué)

教務(wù)系統(tǒng),提供一個(gè)接口可約束一定要完成數(shù)據(jù)(學(xué)生,老師)的增刪改查操作

在這里插入圖片描述

問(wèn)題1、泛型接口的作用

泛型接口可以約束實(shí)現(xiàn)類,實(shí)現(xiàn)類可以在實(shí)現(xiàn)接口的時(shí)候傳入自己操作的數(shù)據(jù)類型這樣重寫的方法都將是針對(duì)于該類型的操作。

泛型通配符、上下限

通配符:?

?   可以在“使用泛型”的時(shí)候代表     一切類型。
 E T K V 是在定義   泛型    的時(shí)候使用的。

泛型通配符:案例導(dǎo)學(xué)

開(kāi)發(fā)一個(gè)極品飛車的游戲,所有的汽車都能一起參與比賽。
特別注意:雖然BMW和BENZ都繼承了Car但是ArrayList<BMW>和ArrayList<BENZ>與ArrayList<Car>沒(méi)有關(guān)系的!!
import java.util.ArrayList;

public class GenericDemo {
    public static void main(String[] args) {
        ArrayList<BENZ> benzs = new ArrayList<>();
        benzs.add(new BENZ());
        benzs.add(new BENZ());
        benzs.add(new BENZ());
        go(benzs);   // ? extends Car 為Car的子類都可以傳入進(jìn)去

        ArrayList<BMW> bmws = new ArrayList<>();
        bmws.add(new BMW());
        bmws.add(new BMW());
        bmws.add(new BMW());
        go(bmws);

        ArrayList<Dog> dogs = new ArrayList<>();
        dogs.add(new Dog());
//        go(dogs);   // 不滿足泛型上下限的條件
    }
    public static void go(ArrayList<? extends Car> car){  // 上下限

    }
}

class Dog{
}

// 父類
class Car{
}

class BENZ extends Car{
}

class BMW extends Car{
}

泛型的上下限:

?   可以在“使用泛型”的時(shí)候代表     一切類型。
 ? extends Car: ?必須是Car或者其子類     泛型上限
 ? super Car : ?必須是Car或者其父類     泛型下限

總結(jié)

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

相關(guān)文章

  • Java實(shí)用小技能之快速創(chuàng)建List常用幾種方式

    Java實(shí)用小技能之快速創(chuàng)建List常用幾種方式

    java集合可以說(shuō)無(wú)論是面試、刷題還是工作中都是非常常用的,下面這篇文章主要給大家介紹了關(guān)于Java實(shí)用小技能之快速創(chuàng)建List常用的幾種方式,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-12-12
  • Java使用百度AI接口實(shí)現(xiàn)智能機(jī)器人對(duì)話系統(tǒng)

    Java使用百度AI接口實(shí)現(xiàn)智能機(jī)器人對(duì)話系統(tǒng)

    AI已經(jīng)在各行各業(yè)中廣泛應(yīng)用,助力于各式各樣的業(yè)務(wù),而在機(jī)器人對(duì)話中,我們可以通過(guò)利用百度AI中的自然語(yǔ)言處理、問(wèn)答知識(shí)圖譜等技術(shù),使機(jī)器人可以更加智能化、自然化的為用戶服務(wù),本文介紹Java利用百度AI接口實(shí)現(xiàn)智能機(jī)器人對(duì)話系統(tǒng)
    2024-01-01
  • List集合中對(duì)數(shù)據(jù)實(shí)現(xiàn)多重規(guī)則進(jìn)行排序的案例

    List集合中對(duì)數(shù)據(jù)實(shí)現(xiàn)多重規(guī)則進(jìn)行排序的案例

    今天小編就為大家分享一篇關(guān)于List集合中對(duì)數(shù)據(jù)實(shí)現(xiàn)多重規(guī)則進(jìn)行排序的案例,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2018-12-12
  • Java數(shù)據(jù)結(jié)構(gòu)之有效隊(duì)列定義與用法示例

    Java數(shù)據(jù)結(jié)構(gòu)之有效隊(duì)列定義與用法示例

    這篇文章主要介紹了Java數(shù)據(jù)結(jié)構(gòu)之有效隊(duì)列定義與用法,結(jié)合實(shí)例形式分析了java有效隊(duì)列的數(shù)據(jù)插入、刪除、判斷、計(jì)算等相關(guān)操作技巧,需要的朋友可以參考下
    2017-10-10
  • Maven配置文件pom.xml詳解

    Maven配置文件pom.xml詳解

    什么是POM?這篇文章主要介紹了Maven的配置文件pom.xml,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • 如何將mybatis配置到springmvc中

    如何將mybatis配置到springmvc中

    為了更方便的連接數(shù)據(jù)庫(kù),將mybatis配置到springMVC中。接下來(lái)通過(guò)本文給大家分享如何將mybatis配置到springmvc中,需要的朋友參考下吧
    2017-11-11
  • Mybatis Log Plugin的使用方式

    Mybatis Log Plugin的使用方式

    這篇文章主要介紹了Mybatis Log Plugin的使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • Java?8中?Stream小知識(shí)小技巧方法梳理

    Java?8中?Stream小知識(shí)小技巧方法梳理

    這篇文章主要介紹了Java8中Stream小知識(shí)小技巧方法梳理,Stream流和迭代器一樣,它只能夠迭代一次。當(dāng)它遍歷完的時(shí)候,我們就稱它已經(jīng)消費(fèi)完了。如果還想重新執(zhí)行操作,那么就只能從原來(lái)的地方再獲取一個(gè)流
    2022-09-09
  • Spring Cache手動(dòng)清理Redis緩存

    Spring Cache手動(dòng)清理Redis緩存

    這篇文章主要介紹了Spring Cache手動(dòng)清理Redis緩存,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • Java實(shí)現(xiàn)經(jīng)典捕魚達(dá)人游戲的示例代碼

    Java實(shí)現(xiàn)經(jīng)典捕魚達(dá)人游戲的示例代碼

    《捕魚達(dá)人》是一款以深海狩獵為題材的休閑競(jìng)技游戲。本文將利用Java實(shí)現(xiàn)這一經(jīng)典的游戲,文中采用了swing技術(shù)進(jìn)行了界面化處理,需要的可以參考一下
    2022-02-02

最新評(píng)論