Eclipse和Java8内容辅助

Eclipse和Java8内容辅助,eclipse,lambda,java-8,Eclipse,Lambda,Java 8,我想检查Java8与EclipseLuna的集成,所以我从Eclipse.org下载了M7Luna 在将JDK配置为jdk8u5之后,我开始了一些测试 假设你有一个很好的Runnable Runnable r = new Runnable() { @Override public void run() { System.out.println("foo"); } }; 如果您选择 new Runnable() { @Override public

我想检查Java8与EclipseLuna的集成,所以我从Eclipse.org下载了M7Luna

在将JDK配置为jdk8u5之后,我开始了一些测试

假设你有一个很好的Runnable

Runnable r = new Runnable() {
   @Override
    public void run() {
        System.out.println("foo");
    }
};
如果您选择

new Runnable() {
  @Override
  public void run() {
    System.out.println("foo");
  }
}
块并按Ctrl-1(快速修复),您会得到将其更改为lambda的建议,结果是
Runnable r=()->System.out.println(“foo”),这很酷

但更好的办法是帮助创建lambda表达式。 例如,如果键入
Runnable r=|
(光标位置为|),然后按ctrl+Space(内容辅助),我希望在显示的弹出窗口中找到“从此功能界面创建lambda表达式”选项。但是没有新的消息

你知道这在将来是否会实施吗?
我认为这可能与模板(Java/Editor/templates in preferences)有关,但实际上我从未尝试过它们。

=
之后立即提供好的建议是相当棘手的,因为几乎所有内容都可以放在作业的右侧

即使是使用匿名内部类实现函数的旧方法也没有在等号之后立即提出。您必须键入四个字符
new␣()->
,但是在这个地方,创建lambda不再有意义,因为您已经创建了它

因此,与其他提案相比,提出lambda需要提升其优先权,使其出现在等号之后,但其效益仍然相当有限。除非使用自动菜单弹出窗口,否则必须按crtl+空格键,然后选择“创建lambda”只需插入四个字符
()->
或类似
名称->
的内容,而在插入建议后,参数名称可能会发生更改

对于内部类read-method-overriding,建议参数是有意义的,因为您必须准确地重复所有参数类型,但是对于可以省略所有批量的lambda,保存非常有限


因此,我不希望lambda创作的提案出现在列表中。

你应该在或在“几乎所有东西都可以放在作业的右侧”——呃。。。不,那句话与现实情况几乎完全相反。右侧赋值只能是非常有限的一组内容-->当前作用域中的对象和字段、当前作用域或类路径中的lambda/函数接口、已知常量和静态表达式等等。我猜lambda会在将来的某个时候出现——一旦内容助手们找到一套合适的规则(就像他们在自动格式化中所做的那样)@Specializet:除了
void
方法调用之外的所有表达式都可以直接显示在赋值运算符上,并且由于匿名内部类,这包括了整个类定义。因此,
package
声明和
import
语句是赋值运算符之后唯一不能出现的内容。所以底线是几乎所有的东西都可以在赋值操作符之后出现。如果你想吹毛求疵,选择一个你真正了解的话题。。。除此之外,这完全是幻想。请继续并尝试将浮点值指定给boolean,而不显式忽略编译器错误(如果可能的话)/抑制内容辅助警告。如果没有显式转换和错误忽略,就不可能为变量分配“几乎任何东西”。但既然你现在正在发动一场火焰战(侮辱等等),我就让你去做你希望现实成为什么样的伪学术幻想吧。玩得开心。@specializet:我关于“几乎任何东西”的陈述的上下文是IDE的上下文相关帮助,IDE必须提供一个建议列表,并将其放在屏幕上的列表中。这就是问题的主题。在您的示例中,在
布尔类型变量=
之后放置浮点表达式是有效的,因为用户可能希望在该表达式之后添加一个“<0”。当您刚刚键入分配的
=
时,IDE如何知道这一点?