- public static void printAl(ArrayList<? extends Person> al)
- {
- Iterator<? extends Person> it = al.iterator();
- while(it.hasNext())
- System.out.println(it.next().getName());//上面泛型改成<? super Student>后,不能调用getName方法
复制代码 这里这段代码,泛型使用<? extends Person>,老毕说使用<? super Student>是一样的,我发现使用super Student之后无法使用Person、Student类中的特有方法。
<? super Student>的意思是可以传入Student及其父类,结果导致传入的是Object类
需要对其类型强转后才能调用特有方法
- while(it.hasNext())
- {
- Person p = (Person)it.next();
- System.out.println(p.getName());
- }
复制代码
|