黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 Java學習 Java泛型的使用介紹及示例

Java泛型的使用介紹及示例

更新時間:2022-12-02 11:17:10 來源:動力節點 瀏覽1280次

在本教程中,我們將通過示例了解 Java 泛型、如何創建泛型類和方法及其優勢。

Java 泛型允許我們創建可用于不同類型數據(對象)的單個類、接口和方法。

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

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

Java泛型類

我們可以創建一個可用于任何類型數據的類。這樣的類稱為泛型類。

以下是我們如何在 Java 中創建泛型類:

示例:創建泛型類

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 編程

在上面的示例中,我們創建了一個名為泛型類. 此類可用于處理任何類型的數據。

class GenericsClass<T> {...}

這里,噸尖括號內使用的<>表示類型參數。在Main類內部,我們創建了兩個對象泛型類整型對象- 在這里,類型參數噸替換為Integer. 現在泛型類適用于整數數據。

字符串對象- 在這里,類型參數噸替換為String. 現在泛型類適用于字符串數據。

Java泛型方法

與泛型類類似,我們也可以創建一個可用于任何類型數據的方法。這樣的類稱為泛型方法。

以下是我們如何在 Java 中創建泛型方法:

示例:創建泛型方法

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);
  }
}

輸出

泛型方法:
傳遞的數據:Java 編程
泛型方法:
通過的數據:25

在上面的示例中,我們創建了一個名為泛型方法.

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

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

我們可以通過將實際類型和放在方法名稱之前的括號內來調用泛型方法。

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

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

demo.genericsMethod("Java Programming");

在這種情況下,編譯器可以根據傳遞給方法的值來匹配類型參數。

有界類型

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

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

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

<T extends A>

這表示噸只能接受子類型的數據一個.

示例:有界類型

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<>();
  }
}

在上面的示例中,我們創建了一個名為 GenericsClass 的類。注意表情,注意表情

<T extends Number> 

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

但是,我們已經創建了泛型類的對象String。在這種情況下,我們會得到以下錯誤。

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

Java泛型的優點

1. 代碼復用性

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

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

在這里,我們創建了一個泛型方法。同樣的方法可用于對整數數據、字符串數據等執行操作。

2.編譯時類型檢查

泛型的類型參數提供有關泛型代碼中使用的數據類型的信息。例如,

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

在這里,我們知道泛型類僅處理Integer數據。

現在,如果我們試圖將 Integer 以外的數據傳遞給此類,程序將在編譯時產生錯誤。

3.與集合一起使用

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

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

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

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 午夜在线精品不卡国产 | 日韩一级精品久久久久 | 欧美日韩精品一区二区三区视频 | 亚洲 欧美 成人日韩 | 中国野外性xxxx | 丝袜老师在办公室被狠狠 | 欧美亚洲国产第一页草草 | 999热成人精品国产免 | 91蜜臀视频 | 久久综合色网 | 香蕉官网 | 中文字幕欧美亚洲 | 直接看的黄色网址 | 欧洲性xxx | 欧美一级高清免费播放 | 成人黄18免费视频 | 成人日b视频 | 色吧在线视频 | 国产成人啪精品视频免费软件 | 亚洲三级视频在线 | avtt亚洲天堂 | 日韩高清特级特黄毛片 | 97在线免费视频 | 国产在线观看不卡免费高清 | 在线观看免费播放网址成人 | 久久综合免费 | 97国产在线公开免费观看 | 国产成人在线视频观看 | 99ri在线精品视频 | 日韩精品国产自在久久现线拍 | 国产精品视频人人做人人爱 | 小明天天看 | 午夜羞羞视频 | 人人添人人澡人人澡人人人人 | 日日爽夜夜操 | 久久亚 | 一级毛片一级毛片 | 国产精品资源在线播放 | 亚洲人成在线播放网站岛国 | 国产成人不卡 | 久久国产欧美 |