【发布时间】:2015-07-12 21:33:48
【问题描述】:
Lambda 翻译是一个两步过程,一个:将 lambda 脱糖为同一类中的静态方法。
public class Main {
public static void main(String[] args) {
Runnable r = () -> System.out.println("Hello");
System.out.println(Arrays.asList(Main.class.getDeclaredMethods()));
}
}
[private static void Main.lambda$main$0(), public static void Main.main(java.lang.String[])]
二:生成实现功能接口的类。
System.out.println("A class has been generated: " + r.getClass());
System.out.println("That implements a Functional Interface: " + Arrays.asList(r.getClass().getInterfaces()));
已经生成了一个类:class Main$$Lambda$1/149928006
实现一个函数式接口:[interface java.lang.Runnable]
问题:这个静态方法有什么需要?为什么不能直接把lambda body放到接口方法里面呢?类似的东西:
class Main$$Lambda$1 {
public void run() {
/* Lambda body here */
}
}
【问题讨论】:
标签: java lambda jvm java-8 bytecode