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的父類。

參考

相關文章
相關標籤/搜索