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

参考

原文地址:https://www.cnblogs.com/wang7/p/10152803.html