Java Lambda表达式导致Eclipse Luna中出现警告
我有一个非常类似的问题,如这个未回答的问题所述: 我在Windows7和Java8(JDK1.8.005)上使用EclipseLuna(服务版本1,4.4.1)。以下(编辑的)代码: 该警告分配给代码的这一部分:“(c1,c2)->” 注意:有趣的是,省略return语句的较短版本编译起来很好,没有任何警告:Java Lambda表达式导致Eclipse Luna中出现警告,java,eclipse,lambda,Java,Eclipse,Lambda,我有一个非常类似的问题,如这个未回答的问题所述: 我在Windows7和Java8(JDK1.8.005)上使用EclipseLuna(服务版本1,4.4.1)。以下(编辑的)代码: 该警告分配给代码的这一部分:“(c1,c2)->” 注意:有趣的是,省略return语句的较短版本编译起来很好,没有任何警告: Collections.sort(new LinkedList<>(), (c1, c2) -> c1.equals(c2)? 1 : 0); 编辑2:Eclipse
Collections.sort(new LinkedList<>(), (c1, c2) -> c1.equals(c2)? 1 : 0);
编辑2:Eclipse开普勒没有显示此警告(相同的Java版本)。顺便说一句。给定的代码旨在成为MWE-它没有任何意义。此代码:
Collections.sort(list,(c1,c2)->{return c1.equals(c2)?1:0;})代码>也显示了警告。很好,这接近真实的MWE:-)我将更新我的问题-使用更复杂的示例没有意义。但是,此代码的快捷版本工作正常:Collections.sort(new LinkedList(),(c1,c2)->c1.equals(c2)?1:0;--奇怪的是,(对象a,对象b)
(不过我们可能想找到更干净的东西)
(Recovered) Internal inconsistency detected during lambda shape analysis
Collections.sort(new LinkedList<>(), (c1, c2) -> c1.equals(c2)? 1 : 0);
Collections.sort(new LinkedList<>(), (Object c1, Object c2) -> {
return c1.equals(c2)? 1 : 0;
});
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;
});