Java 10是否消除了每个循环?

时间:2018-09-27 14:00:35

标签: java for-loop java-10

我最近安装了Java 10,然后将我的Maven项目升级到Java 10。我有一段代码试图遍历对象列表(在本例中为Swing的JTable系统的TableModelListeners)。但是,此代码被报告为错误:

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

在第二行中声称没有声明或实例化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 :(得分:0)

否,Java 10没有碰到for-每个循环。如果使用Java <10编译的代码,则应该在Java 10上执行相同的操作。

我确定,如果您使用Maven生成项目,则不会看到编译错误。如果是这样的话,Eclipse在这里有问题,但可能只是个小问题。尝试各种解决策略,例如deleting the problem in the Problems View,清理项目,甚至重新导入。

注意:return(mLstTableModelListeners);行是单字的-return mLstTableModelListeners;是实现此目的的常用方法。