很多朋友都想知道java 泛型是什么?下面就一起來了解一下吧~
Java泛型是JDK 5中引入的一個新特性,泛型提供了編譯時類型安全監測機制,該機制允許程序員在編譯時監測非法的類型,泛型的本質是參數化類型,也就是所操作的數據類型被指定為一個參數。
泛型的使用
泛型有三種常用的使用方式:泛型類,泛型接口和泛型方法。下面講一一簡單介紹這三種使用方法:泛型類
一個泛型類(generic class)就是具有一個或多個類型變量的類。下面通過一個簡單的Pair類作為例子。對于這個類來說,我們只關注泛型,而不會為數據存儲的細節煩惱。下面是Pair類的代碼:
/* ?*?泛型類 ?*?Java庫中?E表示集合的元素類型,K?和?V分別表示表的關鍵字與值的類型 ?*?T(需要時還可以用臨近的字母?U?和?S)表示“任意類型” ?*/public?class?Pair?{ ???? ????private?T?name; ????private?T?price; ????public?Pair()?{ ????} ????public?Pair(T?name,?T?price)?{ ????????this.name?=?name; ????????this.price?=?price; ????} ????public?T?getName()?{ ????????return?name; ????} ????public?void?setName(T?name)?{ ????????this.name?=?name; ????} ????public?T?getPrice()?{ ????????return?price; ????} ????public?void?setPrice(T?price)?{ ????????this.price?=?price; ????}}
Pair類引入了一個類型變量T,用尖括號(<>)括起來,并放在類名的后面。泛型類可以有多個類型變量。例如,可以定義Pair類,其中第一個域和第二個域使用不同的類型:
public?class?Pair?{?...?}
類方法中的類型變量指定方法的返回類型以及域和局部變量的類型。例如:
private?T?first;?//uses?the?type?variable
用具體的類型替換類型變量就可以實例化泛型類型,例如:
Pair
可以將結果想象成帶有構造器的普通類:
Pair()Pair (String,String)
和方法:
String?getName()String?getPrice()void?setName(String)void?setPrice(String)泛型接口
public?interface?Generator?{ ????public?T?next();}
繼承接口:
public?class?FruitGenerator?implements?Generator?{ ????@Override ????public?String?next()?{ ????????return?"Fruit"; ????}}
或者也可以這樣:
public?class?FruitGenerator?implements?Generator ?{ ????private?T?next; ????public?FruitGenerator(T?next)?{ ????????this.next?=?next; ????} ????@Override ????public?T?next()?{ ????????return?next; ????} ????public?static?void?main(String[]?args){ ????????FruitGenerator ?fruit?=?new?FruitGenerator<>("Fruit"); ????????System.out.println(fruit.next); ????}}
泛型方法
這個方法是在普通類中定義的,而不是在泛型類中定義的。然而,這是一個泛型方法,可以從尖括號和類型變量看出這一點。注意,類型變量放在修飾符(這里是?public static)的后面,返回類型的前面。
以上就是小編今天的分享,希望能幫到大家~