繁体   English   中英

Eclipse Java 8自动完成Lambda表达式

[英]Eclipse Java 8 Auto completion for Lambda expressions

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

stuList.stream().collect(Collectors.averagingDouble(p -> p.getMarks() ));

如果我写p -> p. 然后尝试使用eclipse进行内容辅助,没有显示任何方法。 但是如果添加一个LHS, double d = ,那么做内容辅助p -> p. 显示所有可用的方法。

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

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

使用eclipse:Mars ..

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM