目錄
- 泛型
- 泛型類
- 泛型接口
泛型
定義類、接口、方法時,同時聲明了一個或者多個類型變量(如:<E>
),稱為泛型類、泛型接口、泛型方法、它們統稱為泛型
作用:泛型提供了在編譯階段約束所能操作的數據類型,并自動進行檢查的能力!這樣可以避免強制類型轉換,以及可能出現的異常
本質:把具體的數據類型作為參數傳遞給類型變量
泛型類
修飾符 class 類名<類型變量,類型變量,…>{
}
public class ArrayList<E>{...}
如下是自定義泛型類:
多個類型變量
變量繼承情況
這里的Cat
類必須繼承Animal
類
package generics;public class Demo2 {public static void main(String[] args) {MyArrayList<String> stringMyArrayList = new MyArrayList<>();stringMyArrayList.add("java");System.out.println(stringMyArrayList.get(0));}
}
package generics;public class MyArrayList<K> {private Object[] arr = new Object[10];private int size;public boolean add(K k){arr[size++] = k;return true;}public K get(int index){Object o = arr[index];return (K) o;}}
泛型接口
修飾符 interface 接口名<類型變量,類型變量,...>
{
}
public interface A<E>{}
注意:類型變量建議用大寫的英文字母,常用的有:E、T、K、V等
package generics;import java.util.ArrayList;public interface Data <E>{void add(E e);ArrayList<E> getData(String name);}
package generics;import java.util.ArrayList;public class Demo4 implements Data<Cat> {@Overridepublic void add(Cat cat) {}@Overridepublic ArrayList<Cat> getData(String name) {return null;}
}
這里也支持變量繼承