本帖最后由 刘源 于 2012-7-14 10:24 编辑
这个是毕老师的泛型限定高级应用的视频,看到泛型限定,很吃力了,思路混乱中,希望高手解答下。
class Person
{
public String name;
Person(String name)
{
this.name = name;
}
String getName()
{
return name;
}
}
class Student extends Person
{
Student(String name)
{
super(name);
}
public String getName()
{
return name;
}
}
class GenericDemo7
{
public static void main(String[] args)
{
ArrayList<;Person> a1 = new ArrayList<;Person>();
a1.add(new Person("liu"));
a1.add(new Person("wang"));
a1.add(new Person("zhang"));
//printColl(a1);
ArrayList<Student> a2 = new ArrayList<Student>();
a2.add(new Student("xiao"));
a2.add(new Student("hong"));
a2.add(new Student("wei"));
printColl(a2);
}
public static void sop(Object obj)
{
System.out.println(obj);
}
public static void printColl(ArrayList<? extends Person> t)//? super Student
{
for(Iterator<? extends Person>it =t.iterator();it.hasNext();)
{
sop(it.next().getName());
}
}
}
代码中<? extends Person>,本人已经理解了。那为什么学生继承了父亲,而且学生也没有什么特有的方法,那为什么把<? extends Person>改成了<? super Student>,系统就给我报错呢。
系统错误为:
GenericDemo7.java:27: 找不到符号
符号: 方法 getName()
位置: 类 java.lang.Object
sop(it.next().getName());
难到是因为student没有getName()方法吗,但后面我给加上了。系统还是没有找到啊。那为什么我改完了之后,系统还是找不到呢。希望思路好的解答下。谢谢。 |