有段代码看不懂,劳烦大家帮忙解答下~~
代码:
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*///:~public static void display(Collection<Pet> pets) { for(Pet p : pets) System.out.print(p.id() + ":" + p + " "); System.out.println(); }//关于这里的实现,我想不通,我把display()方法的代码贴在下面
[解决办法]
for(Pet p : pets)
内部处理的时候是得到Iterator,然后在hasNext ,next这样处理。
[解决办法]
随便写个例子看一下bytecode就明白了。
[解决办法]
1楼已经说的很清楚了,而你想不清楚的地方是for循环取出集合里面的所有对象,相当于迭代一次次的取是一样的
这几个是jdk的新特性~~
[解决办法]