?代表未知类型 1.如果只指定了<?>,而没有extends,则默认是允许Object及其下的任何Java类。也就是任意类。 2.通配符泛型不单可以向下限制,如<? extends Collection>,还可以向上限制,如<? super Double>,表示类型只能接受Double及其上层父类类型,如Number、Object类型的实例。 3.泛型类定义可以有多个泛型参数,中间用逗号隔开,还可以定义泛型接口,泛型方法。这些都与泛型类中泛型的使用规则类似。
package com.src.java; import java.util.*; public class Visitor { public static void print(Collection<? extends Object> c){ Iterator<? extends Object> it=c.iterator(); //遍历集合中的所有元素,hasnext()方法在集合不为空时,返回true while(it.hasNext()){ Object ob=it.next();//取出集合中的一个元素 System.out.println(ob); } } public static void main(String[] args) { Set<String> set=new HashSet<String>(); set.add("Tom"); set.add("Mary"); set.add("Jack"); print(set); List<String> list=new ArrayList<String>(); list.add("linda"); list.add("Mary"); list.add("Rose"); print(list); Map<String,String>map=new HashMap<String,String>(); map.put("M", "男"); map.put("F", "女"); print(map.entrySet()); } }