[英]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.