代码如下:
import java.util.*;
class Person
{
private String name;
Person(String name)
{
this.name=name;
}
public String getName()
{
return name;
}
}
class Student extends Person
{
Student(String name)
{
super(name);
}
}
class GenericDemo4_3
{
public static void main(String[] args)
{
ArrayList<Person> a1=new ArrayList<Person>();
a1.add(new Person("abc1"));
a1.add(new Person("abc2"));
a1.add(new Person("abc3"));
printColl1(a1);
System.out.println("---------------------");
ArrayList<Student> a2=new ArrayList<Student>();
a2.add(new Student("abc--1"));
a2.add(new Student("abc--2"));
a2.add(new Student("abc--3"));
printColl1(a2); printColl2(a2);
}
//上限定
public static void printColl1(ArrayList<? extends Person> a1)
{
Iterator<? extends Person> it=a1.iterator();
while(it.hasNext())
{
System.out.println(it.next().getName());
}
}
//下限定
public static void printColl2(ArrayList<? super Student> a1)
{
Iterator<? super Student> it=a1.iterator();
while(it.hasNext())
{
System.out.println(it.next().getName());
}
}
}
为什么编译报错:
---------- Java编译 ----------
GenericDemo4_3.java:61: 错误: 找不到符号
System.out.println(it.next().getName());
^
符号: 方法 getName()
位置: 类 Object
1 个错误
理解不了这个错误,下限定的是要么是Student类要么是Student的父类,而且Student继承了父类的getName()方法,为什么说找不到getName()方法,求解……
|