泛型是为了安全。
ArrayList<?> : 泛型通配符?,匹配所有的数据类型。
ArrayList<? extends Employee> : 泛型的限定,上限限定,限制的是父类, 可以传递Employee,传递他的子类对象
ArrayList<? super Employee> : 泛型的限定,下限限定,限制的是子类, 可以传递Employee,传递他的父类对象
Demo.java:
package cn.xxx.demo; import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; import java.util.Iterator; public class Demo { public static void main(String[] args) { ArrayList<String> array = new ArrayList<String>(); HashSet<Integer> set = new HashSet<Integer>(); array.add("123"); array.add("456"); set.add(789); set.add(890); iterator(array); iterator(set); } /* * 定义方法,可以迭代任意泛型的集合 * 参数: 怎么实现 , 不能写ArrayList,也不能写HashSet * 参数: 共同实现的接口 * 泛型的通配,匹配所有的数据类型 ? */ public static void iterator(Collection<?> coll){ // <?> 泛型通配符 Iterator<?> it = coll.iterator(); while(it.hasNext()){ //it.next()获取的对象,什么类型 System.out.println(it.next()); } } }