javaSE 泛型通配符?,泛型的限定

泛型是为了安全。

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());
		}
	}
}


猜你喜欢

转载自blog.csdn.net/houyanhua1/article/details/80654367