黑马程序员技术交流社区
标题:
泛型的限定<? super Student>
[打印本页]
作者:
zcbyzcb
时间:
2013-6-16 10:50
标题:
泛型的限定<? super Student>
泛型的限定中,<? extends Person>表示的是传入的是Person的子类都可以接收,那<? super Student>的是student的父类应该都可以接收了,可是出问题了。
import java.util.*;
class Person
{
private String name;
Person(String name)
{
this.name=name;
}
public String getName()
{
return name;
}
}
class Student extends Person
{
//private String name;
Student(String name)
{
super(name);
}
}
class GenericDemo6
{
public static void main(String[] args)
{
ArrayList <Person>al=new ArrayList<Person>();
al.add(new Person("ajfi"));
al.add(new Person("fjia"));
al.add(new Person("daff"));
ArrayList <Student>al1=new ArrayList<Student>();
al1.add(new Student("121"));
al1.add(new Student("122"));
al1.add(new Student("123"));
print(al);
print(al1);
}
public static void print(ArrayList <? super Student> al)
{
Iterator < ? super Student> it=al.iterator();
while(it.hasNext())
{
System.out.println(it.next().getName());
}
}
}
复制代码
编译提示找不到符号,求解?
作者:
尹丽峰
时间:
2013-6-16 11:06
public static void print(ArrayList <? super Student> al)
{
Iterator < ? super Student> it=al.iterator();
while(it.hasNext())
{
Person p = (Person)it.next();
System.out.println(p.getName());
}
}
作者:
Heart
时间:
2013-6-16 11:58
public static void print(ArrayList <? super Student1> al)
{
Iterator < ? super Student1> it=al.iterator();
while(it.hasNext())
{
<font color="red"> //System.out.println(it.next().getName());</font>
System.out.println(((Person)it.next()).getName());
}
}
复制代码
以上红色标注的代码有误,
it.next()返回的是Object类型的,
所以不能调用getName()方法
应该强制类型转换为Person类型,(Person) it.next(),然后再调用getName()方法就行了。
作者:
zcbyzcb
时间:
2013-6-16 14:42
Heart 发表于 2013-6-16 11:58
以上红色标注的代码有误,it.next()返回的是Object类型的,所以不能调用getName()方法
应该强制类型转换 ...
奥,对,Object是所有类的父类,<? super Student>向上拓展在这儿试用还真是有点不合适。
作者:
x378320002
时间:
2013-6-16 16:03
*要往集合中存储集合时,也就是要拿出来集合内的对象来使用其特定方法时,这个集合参数用泛型上限。----存对象的集合参数用上限
*要把集合中元素取出来时,取对象的这个东西的参数用泛型下限。-------取对象的参数集合用下限
你这个集合是存对象的,当然得用泛型上限,下限就错了
作者:
张俊迪
时间:
2013-6-16 17:12
对于下限限定只对参数可行,而对方法不可行
作者:
孙百鑫
时间:
2013-6-22 01:35
楼主您好~帖子长时间未作出回答,我已经将您的帖子改成已解决。如果有问题的话可以私密我哦~
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2