Java 10 исключала для каждого цикла? - PullRequest
0 голосов
/ 27 сентября 2018

Я недавно установил Java 10 и затем обновил свой проект Maven до Java 10.У меня есть блок кода, где я пытаюсь перебрать список объектов (в данном случае TableModelListeners из системы Swing JTable).Этот код сообщается как ошибка, хотя:

for(TableModelListener objListener : getTableModelListeners())
        objListener...

Во 2-й строке утверждается, что objListener не объявлен или не создан.Это работает, когда я конвертирую его в обычный цикл for, например:

for(int iLength = getTableModelListeners().size(), iLoop = 0; iLoop < iLength; iLoop++)
      {
      TableModelListener objListener = getTableModelListeners().get(iLOop);
      //...
      }

Но я не хочу этого, так как это больше кода, который несколько ненужен.Что я делаю не так, если Java 10 каким-то образом изменил формат каждого цикла?

Редактировать: По запросу - Вот код getTableListeners - Это просто ленивое создание:

protected List<TableModelListener> getTableModelListeners()
{
    if(mLstTableModelListeners == null)
        mLstTableModelListeners = new ArrayList<TableModelListener>();

    return(mLstTableModelListeners);
}

1 Ответ

0 голосов
/ 28 сентября 2018

Нет, Java 10 не касалась for - каждой петли.Если код, скомпилированный с Java <10, должен делать то же самое с Java 10. </p>

Я уверен, что если вы создадите проект с помощью Maven, вы не увидите ошибки компиляции.Если это так, у Eclipse есть проблема, но, скорее всего, это просто сбой.Попробуйте различные стратегии разрешения, такие как , удалив проблему в Просмотр проблем , очистив проект или даже импортировав его.

Примечание: строка return(mLstTableModelListeners);unidiomatic - return mLstTableModelListeners; будет обычным способом сделать это.

...