Lambda表达式实现原理

在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);
            }
        }
已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 精致技术 设计师:CSDN官方博客 返回首页