泛型是为了安全。
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());
}
}
}