黑马程序员技术交流社区
标题:
泛型限定[下限]super的使用报错,大神求解释!!!
[打印本页]
作者:
huyang936
时间:
2015-1-31 09:44
标题:
泛型限定[下限]super的使用报错,大神求解释!!!
本帖最后由 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类的方法统统不能用。。。
这个只是我个人的理解不知道对不对,求大神再此不吝赐教解释下,谢谢!!!
图片1.png
(53.6 KB, 下载次数: 28)
下载附件
2015-1-31 09:43 上传
报错界面
作者:
huyang936
时间:
2015-2-1 15:33
泛型的下限限定了只能传该类及该类的父类,并没有限定他的方法。但事实是:自此只能用Object类中有的方法,可以这样理解吗?
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2