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

Pro*_*994 -1 java foreach iterator for-loop

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

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

T.J*_*der 6

你在找错了地方.它不是需要迭代的条目,而是需要的数组.但真正的答案是增强的for循环本身支持循环数组.例如,它用于循环遍历数组,并且分别用于迭代.SEEL JLS§14.14.2 - 增强的for语句,它给出了两个可能的用途:

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

    (...指定循环的算法Iterable......)

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

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