本帖最后由 卢祥洲 于 2013-6-15 16:52 编辑
- import java.util.*;
- class Person{
- private String name;
- Person(String name){
- this.name= name;
- }
- public String getName(){
- return name;
- }
- }
- public class GenericDemo06{
- public static void main(String[] args){
- ArrayList<Person> al1 = new ArrayList<Person>();
- al1.add(new Person("def"));
- al1.add(new Person("sfde"));
- al1.add(new Person("dfdf"));
- printColl(al1);
- }
- public static void printColl(ArrayList<?> a){//这里通配符ArrayList<?>不行
- Iterator<?> it = a.iterator();//这里通配符ArrayList<?>不行
- while(it.hasNext()){
- System.out.println(it.next().getName());
- }
- }
- }
复制代码
使用上面通配符编译报错,把上面通配符改成Person就可以了,这是为啥啊?通配符接受不是可以的吗?ArrayList<?> a = ArrayList<Person>();这样不行,为啥? |