zoukankan      html  css  js  c++  java
  • lambda表达式

    为什么要使用lambda表达式

    1. 避免匿名内部类定义过多
    2. 可以让代码看起来很简洁
    3. 去掉了一些没有意义的代码,只留下核心的逻辑
    4. 对于函数式接口,我们可以通过lambda表达式来创建该接口的对象

    什么是函数式接口

    1. 在任何接口,如果只包含唯一一个抽象方法,那么它就是一个函数式接口。
    public interface Runnable{
        public abstract void run(); 
    }
    
    1. 对于函数式接口,我们可以用lambda表达式来创建该接口的对象。

    lambda的推导:

    package Demo04;
    
    public class TestLambda1 {
        //3.静态内部类
       static class Like2 implements ILike{
            @Override
            public void lambda() {
                System.out.println("I like lambda2");
            }
        }
        public static void main(String[] args) {
           ILike like = new Like();
            like.lambda();
            like=new Like2();
            like.lambda();
    
            //4.局部内部类
            class Like3 implements ILike{
                @Override
                public void lambda() {
                    System.out.println("I like lambda3");
                }
            }
            like = new Like3();
            like.lambda();
    
            //匿名内部类  没有类的名称,必须借助接口或者的父类
            like= new Like() {
                @Override
                public void lambda() {
                    System.out.println("I like lambda4");
                }
            };
            like.lambda();
    
            //6.用lambda简化
            like = ()->{
                System.out.println("I like lambda5");
            };
            like.lambda();
    
    
        }
    
    }
    //1.定义一个函数式接口(任何接口,如果只包含唯一一个抽象方法,那么它就是提个函数式接口)
    interface ILike{
        void lambda();
    }
    //2.实现类
    class Like implements ILike{
        @Override
        public void lambda() {
            System.out.println("I like lambda");
        }
    }
    

    lambda表达式的简化

    package Demo04;
    
    public class TestLambda2 {
    
        public static void main(String[] args) {
            //lambda表达式简化
            ILove love = (int a) -> {
                System.out.println("I love you-->" + a);
            };
    
    
            //简化1.去掉参数类型
            love=(a)-> {
                System.out.println("I love you-->" + a);
            };
    
    
            //简化2.去掉小括号
            love=a-> {
                System.out.println("I love you-->" + a);
            };
    
    
            //简化3:去掉大括号(最终形态的lambda表达式)
            love=a -> System.out.println("I love you-->" + a);
            love.love(2);
        }
    }
    
    
    interface ILove {
        void love(int a);
    }
    
    

    总结

    1. lambda表达式只能有一行代码的情况下才能简化为一行,如果有多行,就用代码快包裹。
    2. lambda表达式前提要是函数式接口
    3. 多个参数也可以去掉参数类型,要去掉就都去掉,必须加上括号
  • 相关阅读:
    Python2和python3的对比
    AirtestIDE学习(一)详解(跨平台的UI自动化编辑器)
    2021/2/18 一些概念笔记
    Django学习笔记(一)
    安装python第三方包时报错
    pycharm调试nodejs代码
    postman+jwt接口做各个环境接口测试(三)
    iOS------App之间传递数据的几种方式
    iOS------教你如何APP怎么加急审核
    关于苹果延迟了App接入HTTPS服务截止日期
  • 原文地址:https://www.cnblogs.com/godles/p/11950174.html
Copyright © 2011-2022 走看看