在Java 8中采用的是内部类
来实现Lambda表达式:
- 1 生成一个静态方法,方法内容就是lambda表达式内容
- 2 生成一个匿名内部类,在这个类里调用1中生成的静态方法
因此最终的Lambda表达式等价于以下形式:
- 1 函数式接口:
@FunctionalInterface
interface Print<T> {
public void print(T x);
}
- 2 Main方法
public static void main(String[] args) {
PrintString("test", new Lambda().new $Lambda$1());
}
}
- 3 等价于
public class Lambda {
public static void PrintString(String s, Print<String> print) {
print.print(s);
}
private static void lambda$0(String x) {
System.out.println(x);
}
final class $Lambda$1 implements Print {
@Override
public void print(Object x) {
lambda$0((String) x);
}
}