泛型的上下限
需求1:定义一个函数可以接收任意类型的集合对象,要求接收的集合对象只能存储Integer或者是Integer的父类类型数据。
需求2:定义一个函数可以接收任意类型的集合对象,要求接收的集合对象只能存储Number或者是Number的子类类型数据。
泛型中的通配符:?
? super Integer 只能存储Integer或者是Integer父类元素。 泛型的下限
? extends Number 只能存储Number或者是Number类型的子类数据。 泛型的上限
package com.cn.genericity;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
/**
* Author:Liu Zhiyong
* Version:Version_1
* Date:2016年7月17日21:54:50
* Desc:泛型的上下限
* 需求1:定义一个函数可以接收任意类型的集合对象,要求接收的集合对象只能存储Integer或者是Integer的父类类型数据。
* 需求2:定义一个函数可以接收任意类型的集合对象,要求接收的集合对象只能存储Number或者是Number的子类类型数据。
*
* 泛型中的通配符:?
*
* ? super Integer 只能存储Integer或者是Integer父类元素。 泛型的下限
* ? extends Number 只能存储Number或者是Number类型的子类数据。 泛型的上限
*
*/
public class Demo5 {
public static void main(String[] args) {
ArrayList<Integer> arrayList1 = new ArrayList<Integer>();
ArrayList<Number> arrayList2 = new ArrayList<Number>();
HashSet<String> hashSet1 = new HashSet<String>();
HashSet<Character> hashSet2 = new HashSet<Character>();
ArrayList<Object> arrayList3 = new ArrayList<Object>();
print(arrayList1);
print(arrayList2);
// print1(arrayList3);//×
// print(hashSet1); //×
// print(hashSet2); //×
}
//泛型的下限
// public static void print(Collection<?> c){
public static void print(Collection<? super Integer> c){
}
//泛型的上限
public static void print1(Collection<? extends Number> c){
}
}