---------------------- android培訓、java培訓、期待與您交流! ----------------------
泛型是在“實例化對象的時候”才爲類中的屬性 指定具體的數據類型。是在類的外部指定。
泛型和object的區別:
泛型代表一個可變的類型 一旦爲其指定了一個具體的類型。則泛型就固定了。不能再更改了。
Object類型代表一個可變的類型 在任何時間、地點都可以接受任何數據類型。
舉個泛型的例子吧。
範例:
public class Point<T> {
private T x;
private T y;
public Point(T x, T y) {
this.x = x;
this.y = y;
}
public T getX() {
return x;
}
public T getY() {
return y;
}
public void setX(T x) {
this.x = x;
}
}
測試代碼:
public class Test { public static void main(String[] args){ Point<String> p1 = new Point<String>("120E","40N"); String ix = p1.getX(); String iy = p1.getY(); System.out.println("x= "+ix+",y= "+iy); } } |
通配符:
以上面的Point類爲例
Point<?> p2 = new Point<Integer>(1,2);其中?就是通配符的意思。
Point<?>與Point<T>有什麼區別呢。前者表示可以接受任意Point<T>類型的對象,後者表示可以接受任意類型的對象。
泛型方法:
就是在一個非泛型類中定義一個使用了泛型的方法。
範例:
無返回值的方法:public <T>void method(T t){}
各種返回值的方法:public <T>T method(){} 返回一個泛型類型
public <T>T[] method(){} 返回一個泛型數組
在接口中使用泛型:
範例:
public interface MyIn<T>
{
public void method(T t);
}
一個類在實現泛型接口的同時爲接口指定一個具體的類型。相應的在接口中的方法中出現的泛型也要跟着改寫。
---------------------- android培訓、java培訓、期待與您交流! ----------------------