定義泛型接口和類


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

2.0

上面定義了一個帶泛型聲明的Apple<T>類,實際使用時會為T形參傳入實際類型。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM