读书人

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

发布时间: 2011-12-12 22:59:56 作者: rapoo

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

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<Pet> 创建的就 属于 AbstractCollection<Pet>类型。

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

和楼主一起学习。

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


这几个是jdk的新特性~~
[解决办法]

探讨
for(Pet p : pets)
内部处理的时候是得到Iterator,然后在hasNext ,next这样处理。

[解决办法]
public interface Collection<E> extends Iterable<E>
Collection就是扩展自Iterable

读书人网 >J2SE开发

热点推荐