• 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. 多个参数也可以去掉参数类型,要去掉就都去掉,必须加上括号
  • 相关阅读:
    table導出excel | 後臺
    web导出excel文件的几种方法
    请求ajax失败或者不执行的原因
    css冲突
    css之底部风格
    1.5 (SQL学习笔记)事务处理
    1.4(SQL学习笔记)分组、子查询、联结、组合查询
    1.3(SQL学习笔记)计算字段及函数
    1.2(SQL学习笔记)高级数据过滤
    1.1(SQL学习笔记)SQL基础
  • 原文地址:https://www.cnblogs.com/godles/p/11950174.html
Copyright © 2020-2023  润新知