A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 huyang936 于 2015-2-1 11:38 编辑
  1. import java.util.*;
  2. class Fan4Demo
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 ArrayList<Person> al = new ArrayList<Person>();
  7.                 al.add(new Person("Lisi1",1));
  8.                 al.add(new Person("Lisi2",2));
  9.                 al.add(new Person("Lisi3",3));
  10.                 print(al);
  11.                 ArrayList<Student> al2 = new ArrayList<Student>();
  12.                 al2.add(new Student("XiaoMing1",1));
  13.                 al2.add(new Student("XiaoMing2",2));
  14.                 al2.add(new Student("XiaoMing3",3));
  15.                 print(al2);
  16.         }
  17.         public static void print(ArrayList<? super Student> al)        //传说中的泛型限定[下限]
  18.         {
  19.                 Iterator<? super Student> it = al.iterator();
  20.                 while(it.hasNext())
  21.                 {
  22.                         System.out.println(it.next().getName());//此处报错
  23.                 }
  24.         }
  25. }

  26. class Person
  27. {
  28.         private String name;
  29.         private int age;
  30.         Person(String name,int age)
  31.         {
  32.                 this.name = name;
  33.                 this.age = age;
  34.         }
  35.         public String getName()
  36.         {
  37.                 return name;
  38.         }
  39.         public int getAge()
  40.         {
  41.                 return age;
  42.         }
  43. }

  44. class Student extends Person
  45. {
  46.         public Student(String name,int age)
  47.         {
  48.                 super(name,age);
  49.         }
复制代码
说说我的理解吧:? super Student 即:此处 ? 可以是Student类型或是Student类型的父类,那么问题来了,Object也是Student类的父类呀!!!那么.getName()方法就无法调用。但问题又来了,如果是这样的话,那么泛型限定的下限局限性也太大了,直接到了Object级别,自此非Object类的方法统统不能用。。。
这个只是我个人的理解不知道对不对,求大神再此不吝赐教解释下,谢谢!!!

图片1.png (53.6 KB, 下载次数: 3)

报错界面

报错界面

1 个回复

倒序浏览
泛型的下限限定了只能传该类及该类的父类,并没有限定他的方法。但事实是:自此只能用Object类中有的方法,可以这样理解吗?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马