開心生活站

位置:首頁 > IT科技 > 

java,泛型

IT科技3.2W
<link rel="stylesheet" href="https://js.how234.com/third-party/SyntaxHighlighter/shCoreDefault.css" type="text/css" /><script type="text/javascript" src="https://js.how234.com/third-party/SyntaxHighlighter/shCore.js"></script><script type="text/javascript"> SyntaxHighlighter.all(); </script>

很多朋友都想知道java 泛型是什麼?下面就一起來了解一下吧~

java 泛型

Java泛型是JDK 5中引入的一個新特性,泛型提供了編譯時類型安全監測機制,該機制允許程序員在編譯時監測非法的類型,泛型的本質是參數化類型,也就是所操作的數據類型被指定爲一個參數。

泛型的使用

泛型有三種常用的使用方式:泛型類,泛型接口和泛型方法。下面講一一簡單介紹這三種使用方法:泛型類

一個泛型類(generic class)就是具有一個或多個類型變量的類。下面通過一個簡單的Pair類作爲例子。對於這個類來說,我們只關注泛型,而不會爲數據存儲的細節煩惱。下面是Pair類的代碼:

/* * 泛型類 * Java庫中 E表示集合的元素類型,K 和 V分別表示表的關鍵字與值的類型 * T(需要時還可以用臨近的字母 U 和 S)表示“任意類型” */public class Pair<T> {        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<T,U> { ... }

類方法中的類型變量指定方法的返回類型以及域和局部變量的類型。例如:

private T first; //uses the type variable

用具體的類型替換類型變量就可以實例化泛型類型,例如:

Pair<String>

可以將結果想象成帶有構造器的普通類:

Pair<String>()Pair<String>(String,String)

和方法:

String getName()String getPrice()void setName(String)void setPrice(String)
泛型接口
public interface Generator<T> {    public T next();}

繼承接口:

public class FruitGenerator implements Generator<String> {    @Override    public String next() {        return "Fruit";    }}

或者也可以這樣:

public class FruitGenerator<T> implements Generator<T> {    private T next;    public FruitGenerator(T next) {        this.next = next;    }    @Override    public T next() {        return next;    }    public static void main(String[] args){        FruitGenerator<String> fruit = new FruitGenerator<>("Fruit");        System.out.println(fruit.next);    }}

泛型方法

這個方法是在普通類中定義的,而不是在泛型類中定義的。然而,這是一個泛型方法,可以從尖括號和類型變量看出這一點。注意,類型變量放在修飾符(這裏是 public static)的後面,返回類型的前面。

標籤:java 泛型