1. 程式人生 > >java基礎-04泛型

java基礎-04泛型

介紹

  • 泛型就是資料型別的引數化表示,泛型的本質是引數化型別,常用E代表任何資料型別,在實際使用的時候把實際的資料型別傳遞給E。
  • 泛型的好處是設計通用的功能,多個數據型別可以共用。
  • 泛型型別E只能代表Object型別,不能代表 int,double等基本型別,要使用Integer,Double代替這些基本型別。
    因為E的上限型別預設是Object,因此只能使用Object型別或Object的子類。

泛型分類

介面泛型

// 集合泛型介面,在介面名後新增<E>
public interface Collection<E>  {
    // 介面中的泛型方法,直接使用介面中的泛型引數當做資料型別
    boolean add(E e);
}

類泛型

// 列表泛型類,在類名後面新增<E>
public class ArrayList<E> extends AbstractList<E> implements List<E> {
    // 泛型類中的泛型方法
    public boolean add(E e) {
        return true;
    }
}

方法泛型

// 泛型方法, 在方法返回型別之前宣告泛型<E>                      
public static < E > void printArray( E[] inputArray )
{
  // 輸出陣列元素            
     for ( E element : inputArray ){        
        System.out.printf( "%s ", element );
     }
     System.out.println();
}

泛型萬用字元

型別萬用字元一般是使用  問好 ?   代替具體的型別引數。  
例如 List<?> 在邏輯上是List<String>,List<Integer> 等所有List<具體型別實參>的父類。

上限泛型和下限泛型

泛型的上限萬用字元<? extends T>

<? extends T>是 Upper Bound(上限) 的萬用字元,用來限制元素的型別的上限,比如  

List<? extends Fruit> fruits;  
表示集合中的元素型別上限為Fruit型別,即只能是Fruit或者Fruit的子類。

泛型的下限萬用字元<? super T>

<? super E> 是 Lower Bound(下限) 的萬用字元 ,用來限制元素的型別下限,比如

List<? super Apple> apples;  
表示集合中元素型別下限為Apple型別,即只能是Apple或Apple的父類。

參考