Java泛型
泛型機制是1.5引入的特性,本質是參數化類型。在類,接口和方法的定義中,所操作的數據類型被傳入的參數指定。
可以在類中使用,可以在方法中使用,可以在集合中使用......
1、泛型在集合中的運用
Java泛型機制廣泛的運用在集合框架中,所有的集合類型都帶有參數,這樣在創建集合時可以指定放入集合中對象類型。
//List list = new ArrayList();//這樣我們可以使用任何類型,要指定一種類型。
List<String> list = new ArrayList<String>();
//現在就指定了只能放入字符串。而且在獲取的時候,不需要造型。
list.add("s");
for (int i = 0; i < list.size(); i++) {
String str = list.get(i);//不需要造型,因爲不是Object
System.out.println(str);
}
/*
* 如果使用迭代器我們也需要泛型
*/
Iterator<String> it = list.iterator();
while (it.hasNext()) {
String string = it.next();
}
//或者
for (Iterator<String> ite = list.iterator(); ite.hasNext();) {
String string = ite.next();
}
1)泛型定義在類名之後,<>之間;
2)泛型可以是字母和數字的組合,但是第一個字符必須是字母;
3)多個泛型之間用“,”分開;
4)泛型可以約束屬性,方法的參數和方法的返回類型。
class Point<E>{
private E x;
private E y;
public Point(E x, E y) {
this.x = x;
this.y = y;
}
public E getX() {
return x;
}
public void setX(E x) {
this.x = x;
}
}
//Point p = new Point(1,2);
//System.out.println(p);
//在使用的時候要給確切的類型
Point<Double> p = new Point<Double>(1.2,20.2);
System.out.println(p);
//我們不止可以指定一個類型,如下:
class Point1<E,Y>{
private E x;
private Y y;
public Point1(E x, Y y) {
this.x = x;
this.y = y;
}
}
在使用支持泛型的類時候,如我們不指定泛型類型,默認情況下泛型指定的就是Object。