小编典典

使用数组增强了for循环

java

我看到了如下一行代码:

for (String w : words) sentence.add(w); // words is declared as String[] words = ...;

就我所知,我认为要能够以这种格式编写for循环,我们需要将“
words”作为实现Iterable接口并覆盖iterator()函数的类的实例。但是’words’是String数组类型,这对于循环格式如何正确?

有人可以给我一些提示吗?


阅读 248

收藏
2020-12-03

共1个答案

小编典典

有关此主题Java教程中

for-each构造也适用于数组,其中它隐藏索引变量而不是迭代器。以下方法返回int数组中的值之和:

// Returns the sum of the elements of a
int sum(int[] a) {
    int result = 0;
    for (int i : a)
        result += i;
    return result;
}

而从该JLS的§14.14.2(Java语言规范):

for语句的增强形式为:

EnhancedForStatement:
    for ( FormalParameter : Expression ) Statement

的类型Expression必须为Iterable或数组类型,否则会发生编译时错误。

但是请注意,数组没有实现Iterable;从JLS的§10.1开始

数组类型的直接超类为Object

每种数组类型都实现接口Cloneablejava.io.Serializable

2020-12-03