Java高階 java基礎(二) 泛型

2021-09-03 10:21:06 字數 2134 閱讀 9455

泛型就是引數化型別

適用於多種資料型別執行相同的**

泛型中的型別在使用時指定

泛型歸根到底就是「模版」

泛型的本質是為了引數化型別(在不建立新的型別的情況下,通過泛型指定的不同型別來控制形參具體限制的型別)。

使用泛型的優點:

使用泛型時,在實際使用之前型別就已經確定了,不需要強制型別轉換(避免無畏的強制型別轉換)。

將執行時出現的錯誤提前至編譯時。

泛型主要使用在集合中,多用於用於多種資料型別執行相同的**。

你可以寫乙個泛型方法,該方法在呼叫時可以接收不同型別的引數。根據傳遞給泛型方法的引數型別,編譯器適當地處理每乙個方法呼叫。

定義泛型方法要遵守以下規則:

例項**:

/**

* 使用泛型方法列印不同字串

*/private static void genericmethodtest() ;

double doublearray = ;

character chararray = ;

//傳遞不同型別的引數

system.out.print("整型陣列元素為:");

printarray(inarray);

system.out.print("雙精度陣列元素為:");

printarray(doublearray);

system.out.print("字元型陣列元素為:");

printarray(chararray);

}/**

* 泛型方法inputarray

** @param inputarray

* @param */

public static void printarray(e inputarray)

當想限制那些被允許傳遞到乙個型別引數的型別種類範圍。例如,乙個運算元字的方法可能只希望接受number或者number子類的例項。這就是有界型別引數的目的。

要宣告乙個有界的型別引數,首先列出型別引數的名稱,後跟extends關鍵字,最後緊跟它的上界。以下例子演示"extends"如何使用在一般意義上的意思"extends"(類)或者"implements"(介面)。該例子中的泛型方法返回三個可比較物件的最大值。

例項**:

/**

* 有界的型別引數比較三個值並返回最大值

*/private static void maximumtest()

private static > t maximum(t x, t y, t z)

泛型類的宣告和非泛型類的宣告類似,除了在類名後面新增了型別引數宣告部分。

和泛型方法一樣,泛型類的型別引數宣告部分也包含乙個或多個型別引數,引數間用逗號隔開。乙個泛型引數,也被稱為乙個型別變數,是用於指定乙個泛型型別名稱的識別符號。因為他們接受乙個或多個引數,這些類被稱為引數化的類或引數化的型別。

例項**:

/**

* 泛型類的實現過程

*/private static void classtest()

/*** 泛型類box

* @param */

public class box

public void sett(t t)

}

例項**:

/**

* 萬用字元測試過程

*/private static void globbingtest()

/*** 定義型別萬用字元下限

* @param data

*/private static void getdown(list<? super number> data)

/*** 定義型別萬用字元上限

* @param data

*/private static void getuper(list<? extends number> data)

/*** 使用?代替具體的型別引數

* @param data

*/private static void getdata(list<?> data)

java基礎 泛型

int 定義了乙個陣列,陣列元素的型別是int 泛型 定義了乙個集合,集合元素的型別就是泛型定義的型別 泛型 將執行時期出現的問題classcastexception,轉移到了編譯時期 方便與程式設計師解決問題,讓執行事情問題減少,安全。泛型格式 通過 來定義要引用的資料型別 使用泛型 在集合框架中...

java基礎 泛型解析

泛型,編寫的 可以被很多不同型別的物件重用。簡單泛型類的定義 public class generic public generic t info public void setinfo t info public t getinfo private t info 用具體的型別替換型別變數 t 就可...

java基礎 03 泛型

一 泛型 generics 1.所謂泛型 就是變數型別的引數化。類別定義時的邏輯完全一樣,只是裡面成員變數的型別不同 如果需要多個相似的類,需要定義多個檔案,不同的只是變數的類別,而邏輯是完全一樣的 如果使用泛型,只要 在編譯時沒有出現警告,就不會遇到執行時classcastexception 型別...