大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國(guó)咨詢/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁(yè) 學(xué)習(xí)攻略 Java學(xué)習(xí) Java泛型的使用介紹及示例

Java泛型的使用介紹及示例

更新時(shí)間:2022-12-02 11:17:10 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1173次

在本教程中,我們將通過(guò)示例了解 Java 泛型、如何創(chuàng)建泛型類和方法及其優(yōu)勢(shì)。

Java 泛型允許我們創(chuàng)建可用于不同類型數(shù)據(jù)(對(duì)象)的單個(gè)類、接口和方法。

這有助于我們重用我們的代碼。

注意:泛型不適用于原始類型(int, float,char等)。

Java泛型類

我們可以創(chuàng)建一個(gè)可用于任何類型數(shù)據(jù)的類。這樣的類稱為泛型類。

以下是我們?nèi)绾卧?Java 中創(chuàng)建泛型類:

示例:創(chuàng)建泛型類

class Main {
  public static void main(String[] args) {
    // initialize generic class
    // with Integer data
    GenericsClass<Integer> intObj = new GenericsClass<>(5);
    System.out.println("Generic Class returns: " + intObj.getData());
    // initialize generic class
    // with String data
    GenericsClass<String> stringObj = new GenericsClass<>("Java Programming");
    System.out.println("Generic Class returns: " + stringObj.getData());
  }
}
// create a generics class
class GenericsClass<T> {
  // variable of T type
  private T data;
  public GenericsClass(T data) {
    this.data = data;
  }
  // method that return T type variable
  public T getData() {
    return this.data;
  }
}

輸出

通用類返回:5
通用類返回:Java 編程

在上面的示例中,我們創(chuàng)建了一個(gè)名為泛型類. 此類可用于處理任何類型的數(shù)據(jù)。

class GenericsClass<T> {...}

這里,噸尖括號(hào)內(nèi)使用的<>表示類型參數(shù)。在Main類內(nèi)部,我們創(chuàng)建了兩個(gè)對(duì)象泛型類整型對(duì)象- 在這里,類型參數(shù)噸替換為Integer. 現(xiàn)在泛型類適用于整數(shù)數(shù)據(jù)。

字符串對(duì)象- 在這里,類型參數(shù)噸替換為String. 現(xiàn)在泛型類適用于字符串?dāng)?shù)據(jù)。

Java泛型方法

與泛型類類似,我們也可以創(chuàng)建一個(gè)可用于任何類型數(shù)據(jù)的方法。這樣的類稱為泛型方法。

以下是我們?nèi)绾卧?Java 中創(chuàng)建泛型方法:

示例:創(chuàng)建泛型方法

class Main {
  public static void main(String[] args) {
    // initialize the class with Integer data
    DemoClass demo = new DemoClass();
    // generics method working with String
    demo.<String>genericsMethod("Java Programming");
    // generics method working with integer
    demo.<Integer>genericsMethod(25);
  }
}
class DemoClass {
  // creae a generics method
  public <T> void genericsMethod(T data) {
    System.out.println("Generics Method:");
    System.out.println("Data Passed: " + data);
  }
}

輸出

泛型方法:
傳遞的數(shù)據(jù):Java 編程
泛型方法:
通過(guò)的數(shù)據(jù):25

在上面的示例中,我們創(chuàng)建了一個(gè)名為泛型方法.

public <T> void genericMethod(T data) {...}

在這里,類型參數(shù)<T>插入在修飾符之后public和返回類型之前void。

我們可以通過(guò)將實(shí)際類型和放在方法名稱之前的括號(hào)內(nèi)來(lái)調(diào)用泛型方法。

demo.<String>genericMethod("Java Programming");
demo.<Integer>genericMethod(25);

注意:我們可以在不包含類型參數(shù)的情況下調(diào)用泛型方法。例如,

demo.genericsMethod("Java Programming");

在這種情況下,編譯器可以根據(jù)傳遞給方法的值來(lái)匹配類型參數(shù)。

有界類型

通常,類型參數(shù)可以接受任何數(shù)據(jù)類型(原始類型除外)。

但是,如果我們只想對(duì)某些特定類型(例如接受數(shù)字類型的數(shù)據(jù))使用泛型,那么我們可以使用有界類型。

在綁定類型的情況下,我們使用extends關(guān)鍵字。例如,

<T extends A>

這表示噸只能接受子類型的數(shù)據(jù)一個(gè).

示例:有界類型

class GenericsClass <T extends Number> {
  public void display() {
    System.out.println("This is a bounded type generics class.");
  }
}
class Main {
  public static void main(String[] args) {
    // create an object of GenericsClass
    GenericsClass<String> obj = new GenericsClass<>();
  }
}

在上面的示例中,我們創(chuàng)建了一個(gè)名為 GenericsClass 的類。注意表情,注意表情

<T extends Number> 

這里,泛型類是用有界類型創(chuàng)建的。這表示泛型類只能使用Number( Integer, Double, 等等) 的子數(shù)據(jù)類型。

但是,我們已經(jīng)創(chuàng)建了泛型類的對(duì)象String。在這種情況下,我們會(huì)得到以下錯(cuò)誤。

GenericsClass<String> obj = new GenericsClass<>();                                                ^
    原因:推理變量 T 具有不兼容的邊界
      等式約束:字符串
      下限:數(shù)字
  其中 T 是類型變量:
    T 擴(kuò)展了類 GenericsClass 中聲明的 Number

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

1. 代碼復(fù)用性

借助 Java 中的泛型,我們可以編寫適用于不同類型數(shù)據(jù)的代碼。例如,

public <T> void genericsMethod(T data) {...}

在這里,我們創(chuàng)建了一個(gè)泛型方法。同樣的方法可用于對(duì)整數(shù)數(shù)據(jù)、字符串?dāng)?shù)據(jù)等執(zhí)行操作。

2.編譯時(shí)類型檢查

泛型的類型參數(shù)提供有關(guān)泛型代碼中使用的數(shù)據(jù)類型的信息。例如,

// using Generics
GenericsClass<Integer> list = new GenericsClass<>();

在這里,我們知道泛型類僅處理Integer數(shù)據(jù)。

現(xiàn)在,如果我們?cè)噲D將 Integer 以外的數(shù)據(jù)傳遞給此類,程序?qū)⒃诰幾g時(shí)產(chǎn)生錯(cuò)誤。

3.與集合一起使用

集合框架使用 Java 中的泛型概念。例如,

// creating a string type ArrayList
ArrayList<String> list1 = new ArrayList<>();
// creating a integer type ArrayList
ArrayList<Integer> list2 = new ArrayList<>();

在上面的示例中,我們使用了相同的ArrayList 類來(lái)處理不同類型的數(shù)據(jù)。與類似ArrayList,其他集合(LinkedList、Queue、Maps等)在 Java 中也是通用的。如果您想了解更多相關(guān)知識(shí),不妨來(lái)關(guān)注一下本站的Java基礎(chǔ)教程技術(shù)文檔,里面還有更豐富的知識(shí)等著大家去學(xué)習(xí),希望對(duì)大家能夠有所幫助哦。

提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)

  • 全國(guó)校區(qū) 2025-04-24 搶座中
  • 全國(guó)校區(qū) 2025-05-15 搶座中
  • 全國(guó)校區(qū) 2025-06-05 搶座中
  • 全國(guó)校區(qū) 2025-06-26 搶座中
免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 四虎影院官网 | 国产免费一级高清淫日本片 | 天天综合亚洲国产色 | 一级特级毛片 | 日韩午夜免费视频 | 欧美破处在线 | 羞羞视频网站在线观看 | 四虎影院视频在线观看 | 午夜在线播放免费高清观看 | 在线欧美一级毛片免费观看 | 亚洲国产成人久久三区 | 狠狠色噜噜狠狠狠 | 麻豆一区二区三区四区 | 一级特黄特黄的大片免费 | 97在线视频免费公开观看 | 欧美亚洲国产第一页草草 | 国产日韩精品一区在线观看播放 | 久久精品99成人中文字幕880 | 97影院理论片手机在线观看 | 天天干天天玩天天操 | 国产偷国产偷亚洲高清在线 | 中文精品爱久久久国产 | 久操视频在线观看 | 四虎影视国产884a精品亚洲 | 日本高清中文字幕一区二区三区a | 成人看片黄a免费 | 日韩美女强理论片 | 成人午夜性a一级毛片美女 成人午夜性视频欧美成人 成人午夜亚洲影视在线观看 | 亚洲国产成人久久一区二区三区 | 99热久这里都是精品小草 | 亚洲日本久久久午夜精品 | 免费在线成人网 | 久久夜夜操妹子 | 亚洲欧美综合区自拍另类 | 精品视频午夜一区二区 | 亚洲欧美另类精品久久久 | 国内精品久久久久久不卡影院 | 四虎影视大全 | 999久久| 久久免费观看国产99精品 | 亚洲一级毛片免费观看 |