import java.util.*;
class Fan4Demo
{
public static void main(String[] args)
{
ArrayList<Person> al = new ArrayList<Person>();
al.add(new Person("Lisi1",1));
al.add(new Person("Lisi2",2));
al.add(new Person("Lisi3",3));
print(al);
ArrayList<Student> al2 = new ArrayList<Student>();
al2.add(new Student("XiaoMing1",1));
al2.add(new Student("XiaoMing2",2));
al2.add(new Student("XiaoMing3",3));
print(al2);
}
public static void print(ArrayList<? super Student> al) //传说中的泛型限定[下限],此处可以传入Student及Student类的父类型
{
Iterator<? super Student> it = al.iterator();
while(it.hasNext())
{
System.out.println(it.next().getName());//此处报错
}
}
}
class Person
{
private String name;
private int age;
Person(String name,int age)
{
this.name = name;
this.age = age;
}
public String getName()
{
return name;
}
public int getAge()
{
return age;
}
}
class Student extends Person
{
public Student(String name,int age)
{
super(name,age);
}
}
说说我的理解吧:? super Student 即:此处 ? 可以是Student类型或是Student类型的父类,那么问题来了,Object也是Student类的父类呀!!!那么.getName()方法就无法调用。但问题又来了,如果是这样的话,那么泛型限定的下限局限性也太大了,直接到了Object级别,自此非Object类的方法统统不能用。。。
这个只是我个人的理解不知道对不对,求大神再此不吝赐教解释下,谢谢!!!