美文网首页
Lambda表达式

Lambda表达式

作者: MHLEVEL | 来源:发表于2020-07-21 23:30 被阅读0次

    内容整理自bilibili 参考链接

    一、lambda表达式的简介

    lambda表达式是java8添加的新特性; Lambda是一个匿名函数。使用lambda表达式可以对一个接口进行非常简单的实现。但是并不是所有接口都可以用lambda表达式来实现,要求接口中定义的必须要实现的抽象方法只能是一个

    Lambda 表达式中的有关符号的解释

    () : 用来描述参数列表
    {} : 用来描述方法体
    -> : Lambda 运算符,读作goes to

    /**
     * @author superquanbin@gmail.com
     * @date 2020-07-21 21:02
     */
    public class Program {
        public static void main(String[] args) {
    
            // 通过实例化接口的类对象的引用
            MyComparator myComparator = new MyComparator();
    
            // 使用匿名内部类
            Comparator comparator1 = new Comparator() {
                @Override
                public int compare(int a, int b) {
                    return a - b;
                }
            };
    
            // 使用 lambda 表达式
            Comparator comparator2 = (a, b) -> a - b;
        }
    }
    
    class MyComparator implements Comparator{
        @Override
        public int compare(int a, int b) {
            return a - b;
        }
    }
    
    interface Comparator{
        int compare(int a, int b);
    }
    
    从普通方法到lambda表达式在格式上的不同

    二、一个简单lambda 表达式从定义到使用的过程

    【1. 定义接口】

    public interface LambdaNoneReturnMutipleParameter {
        void test(int a, int b);
    }
    
    接口案例

    【2. lambda 表达式实现】(以下代码中包含多个接口的lambda表达式的实现)

    /**
     * @author superquanbin@gmail.com
     * @date 2020-07-21 21:51
     */
    public class Syntax1 {
    
        public static void main(String[] args) {
    
            // 无返回值无参数
            LambdaNoneReturnNoneParameter lambdaNoneReturnNoneParameter = () -> {
                System.out.println("this is LambdaNoneReturnNoneParameter impl");
            };
    
            // 无返回值单个参数
            LambdaNoneReturnSingleParameter lambdaNoneReturnSingleParameter = (int a) -> {
                System.out.println(a);
            };
            lambdaNoneReturnSingleParameter.test(10);
    
            // 无返回值多个参数
            LambdaNoneReturnMutipleParameter lambdaNoneReturnMutipleParameter = (int a, int b) -> {
                System.out.println(a - b);
            };
            lambdaNoneReturnMutipleParameter.test(19,3);
    
            // 有返回值无参数
            LambdaSingleReturnNoneParameter lambdaSingleReturnNoneParameter = () -> {
                return 0;
            };
            int a = lambdaSingleReturnNoneParameter.test();
            System.out.println(a);
        }
    }
    

    三、lambda 表达式精简

    省略参数类型
    单个参数的可以省略括号
    如果方法体中只有一条语句的话可以对大括号say byebye
    🚔⚠️ 方法体中有返回值时去掉大括号的话要把return也去掉 👌

    四、lambda 表达式进阶

    引用

    方法引用:
    可以快速的将一个Lambda表达式的实现指向一个已经实现的方法
    语法:方法的隶属者::方法名
    注意:

    1. 参数数量和类型一定要和接口中定义的方法一致
    2. 返回值类型一定要和接口中定义的方法一致

    相关文章

      网友评论

          本文标题:Lambda表达式

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