Eclipse Java 8自动完成Lambda表达式

Sha*_*him 9 java eclipse java-8

在eclipse中学习java8流.找到以下行为有一个Student对象列表,stuList.我有这样的表达方式.

stuList.stream().collect(Collectors.averagingDouble(p -> p.getMarks() ));
Run Code Online (Sandbox Code Playgroud)

如果我编写p -> p.然后尝试使用eclipse进行内容辅助,则不会显示任何方法.但是,如果添加LHS,double d =那么do content assist on会p -> p.显示所有可用的方法.

我希望eclipse能够理解我正在研究一个学生对象,即使我没有提供LHS.对于第一种情况,如果我自己编写方法,代码编译很好.只有自动完成功能无效

有什么指针吗?为什么添加LHS允许eclipse推断类型?

使用eclipse:Mars ..

Ste*_*ann 8

在这个位置完成需要p知道的类型.只要代码在语法上正确的,p推断Student为@Tunaki指出.但是,当你输入''时,很快就会.代码太破碎了,没有文字悬停p. (旁注:文本悬停和完成是由具有不同上下文信息的不同编译器调用计算的,因此它们不会总是看到完全相同的信息).

虽然对于人类读者而言,λ体可能看起来与推断其类型无关,但是在p不知道例如λ是否与空白相容和/或价值相容的情况下,推断不能进行.p.不是一个可以帮助回答这个问题的表达方式.

具有适当的目标类型是类型推断的重要输入,因此一般而言,添加LHS可以改善情况并不令人惊讶.但是,我没有现成的解释,为什么它会在这种情况下影响代码完成.

所有这些只能说明(在很高的层次上)Eclipse为什么会这样做.改进总是可能的,即使它涉及极端复杂性,因为对不完整代码的类型推断固有地做了 - 我们要求的不仅仅是更高阶的推断:推断几种可能的推论中的哪一种可能产生最可能的结果.

开源工具的好处是:您可以通过编写良好的错误报告甚至代码贡献来帮助其持续改进.看到@ the8472引用的错误报告已经有一段时间没有回复了,我只是放弃了评论,让它们回到了雷达上.用户应该在适当的时间间隔内对团队中的错误报告进行ping操作,社区需求与设置优先级相关.lambda机构内部的代码完成是团队议程中的热门话题.