Java10是否消除了for-each循环?

Java10是否消除了for-each循环?,java,for-loop,java-10,Java,For Loop,Java 10,我最近安装了Java10,并将我的Maven项目升级到Java10。我有一段代码,试图循环遍历Swing的JTable系统的TableModelListeners中的对象列表。此代码报告为错误,但: for(TableModelListener objListener : getTableModelListeners()) objListener... 它在第二行中声明objListener没有声明或实例化。当我将其转换为常规for循环时,它会起作用,如下所示: for(int

我最近安装了Java10,并将我的Maven项目升级到Java10。我有一段代码,试图循环遍历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);
      //...
      }
但我不希望这样,因为更多的代码有些不必要。如果Java10以某种方式更改了for-each循环的格式,那么我在这里做错了什么

编辑:按要求-以下是getTableListeners的代码-这只是一个惰性创建:

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

    return(mLstTableModelListeners);
}

不,Java10没有针对每个循环进行触摸。如果代码是用Java编译的,请向您提问getTableModelListeners的方法[1]您是如何编译代码的?javac?专家在某个IDE中?[2] 正如petey所说,您需要显示更多的代码[3],可能需要使用屏幕截图来显示确切的编译错误。我添加了getTableListeners—这只是延迟创建—如果list对象为null,则创建它,然后返回它。至于我是如何编译代码的——我在Eclipse中,但它是一个Maven项目。我没有得到一个“错误”-只是objListener加了下划线,Eclipse说它没有声明。自从我发布这篇文章以来,我一直使用的解决方案是使用收集流,这是自Java 8以来的一个特性,我到目前为止从未使用过-这是一个我并不完全适应的特性,但它现在已经完成了它的工作——我只是希望在同一个方法中包含所有内容,而不是在其中包含匿名的Consumer类。我没有这样做,因为它不完整。我所能说的就是objListener。这就是结局——Eclipse不会自动完成或提供建议,所以我不知道该输入什么。我只能通过常规的for循环或使用流操作来完成它。现在我不能尝试它,因为我的笔记本电脑在昨晚已经坏了,我正试图让我的父母访问我的存储塔来替换它——首先我必须将那台机器升级到Java 10,但这相对简单。我添加了括号,因为它消除了对操作顺序的任何疑问。当然,在我的示例中,毫无疑问,但假设我返回了5*4+x甚至functionparams&!functionparams…那里的操作顺序是什么?我从来不知道,也不想知道。我将继续使用括号,只在事情变得非常混乱时删除括号并简化。它不会对代码造成损害或阻碍括号是切线,但我仍想发表评论。我同意将它们用于复杂的表达式,但在return$expression中,除了在返回之前计算整个表达式之外,没有其他逻辑选择,即return必须是最后一个操作。我的回答中不幸的断线也掩盖了返回后应该有一个空格。除此之外,您是否尝试过我的建议,在Eclipse之外使用project进行构建?@SethD.Fulmer那么,为什么要在循环代码中编写iLoop