Lambda表达式在Eclipse Luna中导致警告

我有一个非常类似的问题,如这个未解答的问题所述: 嵌套的lambda表达式会在Eclipse Luna中产生警告

我正在使用Eclipse Luna(Service Release 1,4.4.1)与Windows 7和Java 8(jdk 1.8.0_05)。 以下( 编辑 )代码:

Collections.sort(new LinkedList(), (c1, c2) -> { return c1.equals(c2)? 1 : 0; }); 

产生警告:

 (Recovered) Internal inconsistency detected during lambda shape analysis 

警告分配给代码的这一部分:“(c1,c2) – >”。

注意 :有趣的是,省略return语句的较短版本编译正常,没有任何警告:

 Collections.sort(new LinkedList(), (c1, c2) -> c1.equals(c2)? 1 : 0); 

对于明确给出c1和c2类型的代码也是如此

 Collections.sort(new LinkedList(), (Object c1, Object c2) -> { return c1.equals(c2)? 1 : 0; }); 

这里发生了什么? (我不相信这个错误建议: https ://bugs.eclipse.org/bugs/show_bug.cgi?id = 432110(在相关问题的评论中给出)有任何帮助,因为警告发生在错误的背景。)

编辑:上面的代码是一个MWE,导致问题的原始代码如下所示:

  Collections.sort(list, (c1, c2) -> { Method m1 = this.allMethods.get(c1); Method m2 = this.allMethods.get(c2); int c = new Integer(m1.getParameterCount()).compareTo( new Integer(m2.getParameterCount())); if (c == 0) { Integer i1 = 0; Integer i2 = 0; if (ConstructorFactory.isTypeAcceptable(m1.getReturnType())) { i1 = 1; } if (ConstructorFactory.isTypeAcceptable(m2.getReturnType())) { i2 = 1; } c = i1.compareTo(i2); } if (c == 0) { c = m1.getName().compareTo(m2.getName()); } return c; }); 

编辑2: Eclipse Kepler没有显示此警告(相同的Java版本)。