泛型的上下限以及通配符

1  泛型中通配符: ? 

2  需求1: 定义一个函数可以接收接收任意类型的集合对象, 要求接收的集合对象只能存储Integer或者是Integer的父类类型数据。

 1 public class Demo4 {
 2     public static void main(String[] args) {
 3         ArrayList<Integer> list1 = new ArrayList<>();
 4         ArrayList<Number> list2 = new ArrayList<>();
 5         
 6         HashSet<String> set = new HashSet<>();
 7         
 8         print(list1);
 9         print(list2);
10 
11     }
12     
13     //需求1: 定义一个函数可以接收接收任意类型的集合对象, 要求接收的集合对象只能存储Integer或者是Integer的父类类型数据。
14     public static void print(Collection<? super Integer> c){
15         
16     }
17 
18 }

 

  注意:  ? super Integer : 只能存储Integer或者是Integer父类元素。  泛型的下限

需求2: 定义一个函数可以接收接收任意类型的集合对象, 要求接收的集合对象只能存储Number或者是Number的子类类型数据。

 1 public class Demo4 {
 2     public static void main(String[] args) {
 3         ArrayList<Integer> list1 = new ArrayList<>();
 4         ArrayList<Number> list2 = new ArrayList<>();
 5         
 6         HashSet<String> set = new HashSet<>();
 7         
 8         print2(list1);
 9         print2(list2);
10     }
11     
12     //需求2: 定义一个函数可以接收接收任意类型的集合对象, 要求接收的集合对象只能存储Number或者是Number的子类类型数据。
13     public static void print2(Collection<? extends Number> c){
14         
15     }
16 }

 

  注意:  ? extends Number : 只能存储Number或者是Number类型的子类数据。 泛型上限

 

posted @ 2017-05-06 20:21  shadowdoor  阅读(577)  评论(0编辑  收藏  举报