A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 轻语。 高级黑马   /  2014-4-17 12:48  /  1093 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 伍叶竹 于 2014-4-17 13:39 编辑

  1. import java.util.*;
  2. class Text02
  3. {
  4. public static void main(String[] args)
  5. {
  6.   ArrayList<Person> al = new ArrayList<Person>();
  7.   al.add(new Person("abc1"));
  8.   al.add(new Person("abc2"));
  9.   al.add(new Person("abc3"));
  10.   printColl(al);
  11.   ArrayList<Student> al1 = new ArrayList<Student>();
  12.   al1.add(new Student("abc--1"));
  13.   al1.add(new Student("abc--2"));
  14.   al1.add(new Student("abc--3"));
  15.   printColl(al1);
  16. }
  17. public static void printColl(Collection<? extends Person> al)
  18. {
  19.   Iterator<? extends Person> it = al.iterator();
  20.   while(it.hasNext())
  21.   {
  22.    System.out.println(it.next().getName());
  23.   }
  24. }

  25. }
  26. class Person
  27. {
  28. private String name;
  29. Person(String name)
  30. {
  31.   this.name = name;
  32. }
  33. public String getName()
  34. {
  35.   return name;
  36. }
  37. }
  38. class Student extends Person
  39. {
  40. Student(String name)
  41. {
  42.   super(name);
  43. }
  44. }
复制代码
<? extends Person>用<? super Student>代替的话,如何修改程序?
还是泛型限定 。 昨晚断网后纠结的问题。



评分

参与人数 1技术分 +1 收起 理由
黑妞~ + 1

查看全部评分

4 个回复

倒序浏览
同求答案
回复 使用道具 举报
  1. public static void printColl(Collection<? super Student> al)
  2. {
  3.   Iterator<? super Student> it = al.iterator();
  4.   while(it.hasNext())
  5.   {
  6.    System.out.println(((Person)it.next()).getName()); //因为Object是所有类的超类,故在这个程序中默认类型为Object,这里向下转型为Person就行了。
  7.   }
  8. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
枫儿 + 1 赞一个!

查看全部评分

回复 使用道具 举报 1 0

嗯嗯  昨天我的修改跟你的是一样的。可是报错 我以为不对。
Person p = (Person)it.next();
System.out.println(p.getName());
  现在知道是有其他小错误 -  -。
回复 使用道具 举报
个人认为,泛型下限限定<? super XXX>除非是调用Objcet类中的方法,否则毫无意义,像楼上那样做了一个强转,首先我感觉这样做多此一举,其次是我感觉会有安全隐患,Objcet是所有类的超类,像楼主代码中定义的方法,如果按楼上的所谓强转,是可以达到目的,但是如果传入了Objcet对象的话,也满足<? super XXX>,编译也可以通过,但是运行时一定会报ClassCastException异常。

评分

参与人数 1技术分 +1 收起 理由
枫儿 + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马