在JAVA循环时看见for (PersonMasterRelation relation : subordinateRelations())这种写法,不太明白
忘高手指点一下

解决方案 »

  1.   

    那是java5的新特性,增强的for循环!
      

  2.   

    relation = subordinateRelations()[i]
      

  3.   

    这是JAVA1.5 增强的for 循环的新特性。(enhanced for loop) 
    所谓“增强的for 循环”,主要也是针对容器的。使用该项特性时,开发者可以将“利用iterator 
    遍历容器”的逻辑交给编译器来处理。例如下列代码: 
    void cancelAll(Collection c) { 
    for (Iterator i = c.iterator(); i.hasNext(); ) { 
    TimerTask tt = (TimerTask) i.next(); 
    tt.cancel(); 


    可以用增强的for 循环改写为: 
    void cancelAll(Collection c) { 
    for (Object o : c) 
    ((TimerTask)o).close(); 

    编译器判断对象c 是一个Collection 子对象(即是容器)之后,就会允许使用增强的for 循环 
    形式,并自动取到c 的迭代器,自动遍历c 中的每个元素。 
    可以看到,上面的代码中仍然有一个强制类型转换(((TimerTask)o).close();)。实际上,这 
    项特性应该普遍地与泛型结合,以获得最大的利益。结合泛型之后,上述代码变成: 
    void cancelAll(Collection c) { 
    for (TimerTask task : c) 
    task.cancel(); 
    }