编译器如何处理java中的lambda表达式?

时间:2016-11-08 09:34:21

标签: java lambda compiler-construction functional-programming jvm

让我们假设我们有以下代码:

Thread t = new Thread(new Runnable(){
    public void run(){
        System.out.println("separated thread");
    }
});
t.start();

Java 8中可替换的内容是:

Thread t = new Thread(() -> System.out.println("separated thread"));
t.start();

现在据我所知,在 JVM 上运行的其他语言中的lambda表达式,例如 Scala Groovy ,简称为一个匿名的块 编译器用其等效的匿名内部类替换表达式的代码,为每个调用生成一个新类,我知道上述在大小和运行时方面都不是很好。

这是Java中的情况吗?如果不是如何处理lambda(详细信息)? 我也很感激;如果使用invokedDynamic功能支持lambda的机制被解释了吗?

0 个答案:

没有答案