Lambda表达式实现原理

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixx3/article/details/96422026

在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);
            }
        }

猜你喜欢

转载自blog.csdn.net/weixx3/article/details/96422026