当前位置: 代码迷 >> J2SE >> 有段代码看不懂,劳烦大伙帮忙解答下~
  详细解决方案

有段代码看不懂,劳烦大伙帮忙解答下~

热度:56   发布时间:2016-04-24 12:56:28.0
有段代码看不懂,劳烦大家帮忙解答下~~
代码:
Java code
import typeinfo.pets.*;import java.util.*;public class CollectionSequenceextends AbstractCollection<Pet> {   //问题1:这里AbstractCollection<Pet> 这里加一个类型参数有什么意义?  private Pet[] pets = Pets.createArray(8);  public int size() { return pets.length; }  public Iterator<Pet> iterator() {    return new Iterator<Pet>() {      private int index = 0;      public boolean hasNext() {        return index < pets.length;      }      public Pet next() { return pets[index++]; }      public void remove() { // Not implemented        throw new UnsupportedOperationException();      }    };  }      public static void main(String[] args) {    CollectionSequence c = new CollectionSequence(); //问题2:这里的对象 C 怎么理解?是属于Collection 对象还是AbstractCollection?    InterfaceVsIterator.display(c);  //关于这里的实现,我想不通,我把display()方法的代码贴在下面    InterfaceVsIterator.display(c.iterator());  //这个实现我明白  }} /* Output:0:Rat 1:Manx 2:Cymric 3:Mutt 4:Pug 5:Cymric 6:Pug 7:Manx0:Rat 1:Manx 2:Cymric 3:Mutt 4:Pug 5:Cymric 6:Pug 7:Manx*///:~

【display方法】
Java code
public static void display(Collection<Pet> pets) {    for(Pet p : pets)      System.out.print(p.id() + ":" + p + " ");    System.out.println();  }


最后还有一段话不理解:(书上原话)
  “当你要实现一个不是Collection的外部类时(这句话脑子完全没概念),由于让他去实现Collection接口可能非常困难或麻烦,因此使用Iterator就会变得非常吸引人。”


--------------------------------
以下内容为自动编辑的内容,并非楼主的发贴内容,此仅用于显示而已,并无任何其他特殊作用
楼主【llm0528】截止到2008-08-04 15:19:12的历史汇总数据(不包括此帖):
发帖的总数量:73 发帖的总分数:1620 每贴平均分数:22  
回帖的总数量:66 得分贴总数量:2 回帖的得分率:3%  
结贴的总数量:73 结贴的总分数:1620  
无满意结贴数:0 无满意结贴分:0  
未结的帖子数:0 未结的总分数:0  
结贴的百分比:100.00% 结分的百分比:100.00%  
无满意结贴率:0.00 % 无满意结分率:0.00 %  
敬礼!
取消马甲机器人,请点这里:http://www.java2000.net/mycsdn/robotStop.jsp?usern=llm0528

------解决方案--------------------
问题1:这里AbstractCollection<Pet> 这里加一个类型参数有什么意义?
指定集合里的对象的类型是Pet

问题2:这里的对象 C 怎么理解?是属于Collection 对象还是AbstractCollection?
是CollectionSequence 

关于这里的实现,我想不通,我把display()方法的代码贴在下面
我认为这个和下面一个是一样的


------解决方案--------------------
问题1: Pet 是java的范型说明这个 CollectionSequence 只能加载 Pet类型
问题2:c 是由 CollectionSequence 创建的所以只属于 CollectionSequence 类型,
要是由AbstractCollection&lt;Pet&gt; 创建的就 属于 AbstractCollection&lt;Pet&gt;类型。

我只知道这两个,其他的也说不清楚。还希望有人指点。

和楼主一起学习。

------解决方案--------------------
lz看的是外文翻译过来的吧
------解决方案--------------------
Java code
//关于这里的实现,我想不通,我把display()方法的代码贴在下面
------解决方案--------------------
for(Pet p : pets)
内部处理的时候是得到Iterator,然后在hasNext ,next这样处理。
------解决方案--------------------
随便写个例子看一下bytecode就明白了。
------解决方案--------------------
1楼已经说的很清楚了,而你想不清楚的地方是for循环取出集合里面的所有对象,相当于迭代一次次的取是一样的
  相关解决方案