java基礎知識 泛型

來源:互聯網
上載者:User

標籤:注意   技術   equal   類型   lang   oid   通配   擦除   參考型別   

泛型

泛型型別的參數類型必須是參考型別
如 ArrayList<int> list = new ArrayList<int>();  //錯誤
 ArrayList<Integer> list = new ArrayList<Integer>();  //正確
list.add(5);  //正確  自動打包(裝箱)機制
int i = list.get(0); //正確,如果元素是封裝類型,如Integer,Double,Character,可以直接將這個元素賦給一個基本類型的變數。這個過程稱為自動拆箱機制

  • 定義泛型類
import java.util.ArrayList;public class GenericStack<E> {         private ArrayList<E> list = new ArrayList<E>();     public boolean isEmpty() {     return list.isEmpty();         }         public int getSize() {    return list.size();         }         public E peek() {     return list.get(getSize() - 1);         }         public E pop() {     E o = list.get(getSize() - 1) ;     list.remove(getSize() - 1);     return o;          }
public void push(E o) {
     list.add(o);
           }
        public String toString() {
     return "stack: " + list.toString();
          }
}

GenericStack擦除參數類型後的建構函式形式是 GenericStack( ),不是GenericStack<>();
泛型類如果有多個參數類型,則將多個參數放在一個角括弧中,如<E1,E2,E3>。
可以定義類或者介面作為泛型類或者泛型介面的子類型,如Java API中,Java.lang.String類實現Comparable介面的寫法是: public  class String implements Comparable<String>;

可以將泛型指定為另外一種類型(或泛型)的子類型,這樣的泛型型別稱之為受限的
public class BoundedTypeDemo{
        public  static <E extends GeometricObject> boolean equalArea(E object1, E object2 )
        {
            return object1.getArea() == object2.getArea( );
        }
}
注意:    泛型型別放置的位置,應放在方法的傳回型別之前(定義泛型方法)或者類名之後(定義泛型類時)

  • 原始類型

可以使用泛型的原始類型(Generic)而無需指定具體類型。如:
GenericStack stack = new GenericStack( ); 等價於
GenericStatck<Object> stack = new GenericStack<Object>( );
這種不帶型別參數的GenericStack泛型類稱為原始類型。使用原始類型可以向後相容Java的早期版本。如Comparable類型

  • 通配泛型

三種形式:
? , 非受限通配,等價於 ? extends object
? extends T, 受限通配,表示T或者T的子類
? super T,下限通配,表示T或者T的父類型

 

 

 

java基礎知識 泛型

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.