泛型就是引數化型別
適用於多種資料型別執行相同的**
泛型中的型別在使用時指定
泛型歸根到底就是「模版」
泛型的本質是為了引數化型別(在不建立新的型別的情況下,通過泛型指定的不同型別來控制形參具體限制的型別)。
使用泛型的優點:
使用泛型時,在實際使用之前型別就已經確定了,不需要強制型別轉換(避免無畏的強制型別轉換)。
將執行時出現的錯誤提前至編譯時。
泛型主要使用在集合中,多用於用於多種資料型別執行相同的**。
你可以寫乙個泛型方法,該方法在呼叫時可以接收不同型別的引數。根據傳遞給泛型方法的引數型別,編譯器適當地處理每乙個方法呼叫。
定義泛型方法要遵守以下規則:
例項**:
/**
* 使用泛型方法列印不同字串
*/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 型別...