Ошибка компиляции Eclipse, показанная неверно (может перебирать только массив или экземпляр java.lang.Iterable) - PullRequest
0 голосов
/ 18 февраля 2019

Я испытываю действительно странную проблему в Затмении (Фотон 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.6.Но на прошлой неделе все работало без ошибок.Только что увидел это всплывающее сегодня на ровном месте.

Похоже на ошибку в компиляторе Eclipse, но я не уверен, как ее решить.Любая помощь будет принята с благодарностью.

Добавление "Minimal, Complete and Verifiable Example" ниже

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

1 Ответ

0 голосов
/ 18 февраля 2019

Вам не нужно определять новый итератор:

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
...