增强的for循环如何迭代原始类型?

时间:2016-08-29 16:31:36

标签: java for-loop foreach iterator

我知道增强的for循环(因为java 1.5)可用于迭代实现Iterator接口的类类型集合。然而,它也可以用于迭代基本类型的数组,例如int,boolean,... 所以我的逻辑结论是,由于自动装箱和拆箱,例如,原始整数被包装在它们的引用类型中,然后轮流实现Iteratable。

但是,当我查阅java.lang.Integer的文档时,没有提到任何可以实现或扩展Iterable接口的超类或接口的扩展或实现。如果没有实现Iterable接口,增强的for循环如何知道如何循环原始类型?

1 个答案:

答案 0 :(得分:6)

你正在寻找错误的地方。这不是条目需要可迭代的,而是需要的数组。但真正的答案是增强的for循环本身支持循环数组。例如,它用于循环遍历数组,分别是迭代。 Seel JLS§14.14.2 - The enhanced for statement,它提供了两种可能的用途:

  
      
  • 如果 Expression 的类型是Iterable的子类型,则翻译如下。

         

    (...指定循环T[]的算法...)

  •   
  • 否则, Expression 必须具有数组类型T[]

         

    (...指定循环遍历strings.map!{|string| string.gsub(/\P{ASCII}/,'')} 数组的算法...)

  •