本帖最后由 huyang936 于 2015-2-1 11:38 编辑
- 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) //传说中的泛型限定[下限]
- {
- 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类的方法统统不能用。。。
这个只是我个人的理解不知道对不对,求大神再此不吝赐教解释下,谢谢!!! |
|