java基礎-04泛型
阿新 • • 發佈:2018-12-20
介紹
- 泛型就是資料型別的引數化表示,泛型的本質是引數化型別,常用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的父類。