【问题标题】:How exactly does an enhanced for-loop iterate over primitive types? [duplicate]增强的 for 循环究竟如何迭代原始类型? [复制]
【发布时间】:2017-01-05 18:19:05
【问题描述】:

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

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

【问题讨论】:

标签: java for-loop foreach iterator


【解决方案1】:

你找错地方了。需要迭代的不是 entries,而是需要迭代的 array。但真正的答案是增强的 for 循环具有对数组循环的原生支持。例如,它用于分别循环遍历数组 ,可迭代对象。请参阅JLS§14.14.2 - The enhanced for statement,它提供了两种可能的用途:

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

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

  • 否则,表达式必然有一个数组类型,T[]

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-03
    • 1970-01-01
    • 2020-02-06
    • 1970-01-01
    • 2010-09-22
    • 1970-01-01
    • 2016-10-20
    • 1970-01-01
    相关资源
    最近更新 更多