美文网首页
Lambda表达式原理

Lambda表达式原理

作者: flyjar | 来源:发表于2022-08-24 17:00 被阅读0次

    1、一个函数式接口

    @FunctionalInterface
    public interface UserService {
    
       void  show();
    }
    

    2、Lambda调用函数式接口

    public class LambdaTest {
    
        public static void main(String[] args) {
       //此处就是lambda写法。调用lambdaMethod方法,而方法的参数是一个函数式接口。
      //lambda实际就是调用一个方法,而方法的参数是一个函数式接口对象
            lambdaMethod(() -> {
                System.out.println("您好");
            });
        
        }
        public static void lambdaMethod(UserService service) {
            service.show();
        }
    }
    

    3、Lambda表达式最终生成的代码(实际上生成代码并不是这个样子,但是逻辑是一样的) 程序运行时动态生成class

    • 会生成一个静态方法lambda$main$0,这个方法区执行lambda大括号里面的内容。
      1. 还会形成一个匿名内部类,实现接口,调用lambda$main$0()方法
    public class LambdaTest {
    
        public static void main(String[] args) {
    
            lambdaMethod(new UserService(){
                @Override
              public void show(){
                    LambdaTest.lambda$main$0();
             }
    
          });
    
        }
        public static void lambdaMethod(UserService service) {
            service.show();
        }
    
        private static void lambda$main$0() {
            System.out.println("您好");
        }
    }
    
    

    相关文章

      网友评论

          本文标题:Lambda表达式原理

          本文链接:https://www.haomeiwen.com/subject/wndrgrtx.html