-2

Eclipse (Photon 4.8) で非常に奇妙な問題が発生しています。for (Object x : ObjectList){} ロジックを使用するコードがいくつかあり、突然コンパイル エラーがスローされます。

Can only iterate over an array or an instance of java.lang.Iterable

非常にシンプルにするために、クラスのテストとして次のように書きました

ArrayList<String> tmp = new ArrayList<String>();
tmp.add("making sure there's something here");
tmp.add("and again...just for the heck of it");
for(String x : tmp) {
    System.out.println(x);
}

そのブロックも同じエラーをスローします (「tmp」オブジェクトで)。Eclipseを数回再起動し、クリーン/リビルドを行いました。私の Java コンパイラは 1.8 に設定されています。これは、1.6 から約 1 週間前に行った変更です。しかし、過去 1 週間はエラーなく正常にコンパイルされています。今日、突然このポップアップが表示されました。

Eclipse コンパイラーのバグのようですが、解決方法がわかりません。どんな助けでも大歓迎です。

以下に「最小限、完全かつ検証可能な例」を追加

public class Test { 
    public static void main(String[] args) {
        java.util.ArrayList<String> tmp = new java.util.ArrayList<String>();
        tmp.add("String 1");
        tmp.add("String 2");
        for(String x : tmp) {
            System.out.println(x);
        }
    }
}

上記のクラスは、「tmp」に対して次のコンパイル エラーをスローします。

Can only iterate over an array or an instance of java.lang.Iterable
4

1 に答える 1

2

新しいイテレータを定義する必要はありません:

ArrayList<String> tmp = new ArrayList<String>();
tmp.add("making sure there's something here");
tmp.add("and again...just for the heck of it");
for(String x : tmp) {
    System.out.println(x);
}

>> making sure there's something here
>> and again...just for the heck of it
于 2019-02-18T13:48:12.037 に答える