更新時(shí)間:2022-08-11 11:24:38 來源:動(dòng)力節(jié)點(diǎn) 瀏覽2556次
在本教程中,動(dòng)力節(jié)點(diǎn)小編將通過示例了解 Java 泛型、如何創(chuàng)建泛型類和方法及其優(yōu)勢(shì)。
Java 泛型允許我們創(chuàng)建可用于不同類型的數(shù)據(jù)(對(duì)象)的單個(gè)類、接口和方法。
這有助于我們重用我們的代碼。
我們可以創(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類中,我們創(chuàng)建了兩個(gè)對(duì)象泛型類對(duì)象- 這里,類型參數(shù)噸替換為Integer?,F(xiàn)在泛型類適用于整數(shù)數(shù)據(jù)。
字符串對(duì)象- 這里,類型參數(shù)噸替換為String?,F(xiàn)在泛型類適用于字符串?dāng)?shù)據(jù)。
與泛型類類似,我們也可以創(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 編程
泛型方法:
數(shù)據(jù)通過:25
在上面的示例中,我們創(chuàng)建了一個(gè)名為的泛型方法
public <T> void genericMethod(T data) {...}
在這里,類型參數(shù)<T>插入在修飾符之后public和返回類型之前void。
我們可以通過將實(shí)際類型放在方法名稱前的方括號(hào)內(nèi)來調(diào)用泛型<String>方法<Integer>。
demo.<String>genericMethod("Java Programming");
demo.<Integer>genericMethod(25);
1. 代碼可重用性
借助 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)泛型代碼中使用Java的數(shù)據(jù)類型信息。例如,
// using Generics
GenericsClass<Integer> list = new GenericsClass<>();
在這里,我們知道泛型類僅使用Integer數(shù)據(jù)。
現(xiàn)在,如果我們嘗試將 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 類來處理不同類型的數(shù)據(jù)。
相關(guān)閱讀
Java實(shí)驗(yàn)班
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
Java就業(yè)班
有基礎(chǔ) 直達(dá)就業(yè)
Java夜校直播班
業(yè)余時(shí)間 高薪轉(zhuǎn)行
Java在職加薪班
工作1~3年,加薪神器
Java架構(gòu)師班
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)