JDK1.5之后的List接口,Iterator接口,Map接口的代碼:
public interfaceList<E>
{
voidadd(E x);
Iterator<E> iterator();
}
public interfaceIterator<E>
{
E next();
Boolean hasNext();
}
Public interfaceMap<K,V>
{
Set<K> keyset();
V put(K key, V value);
}
上面三個接口聲明比較簡單,除了尖括號中的內容――這就是泛型的實質;允許在定義接口,類時指定類型形參,類型形參在整個接口,類體內中可當作類型使用,幾乎所有可使用其他普通類型的地方都可以使用這種類型形參。
例如我們使用List類型時,為E形參傳入String類型實參,則產生了一個新的類型: List<String>類型,我們可以把List<String>想像成E杯全部替換成String的特殊List子接口:
Public interfaceListString extends List
{
Voidadd(String x);
Iterator<String> iterator();
}
雖然程序只定義了一個List<E>接口,但實際使用時可以產生無數多個List接口,只要為E傳入不同的類型實參,系統就會多出一個新的List子接口。
public class Apple<T> {
private T info;
public Apple(){}
public Apple(T info){
this.info =info;
}
public void setInfo(T info){
this.info =info;
}
public T getInfo(){
return this.info;
}
public static void main(String[] args){
Apple<String> a1 = new Apple<String>("Apple");
System.out.println(a1.getInfo());
Apple<Double> a2 = new Apple<Double>(2.00);
System.out.println(a2.getInfo());
}
}
Output:
Apple