关于Lambda表达式的详细解析-笔记

本文介绍了Java中Lambda表达式的六种使用场景,包括无参无返回值、有参无返回值、类型推断、参数省略、多参数和返回值以及单行表达式简化。通过实例展示了如何在接口实现和Lambda表达式中运用它们。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


import java.util.function.Consumer;

public class LambdaTest {
    class Lambda implements LambdaTest1 {
        @Override
        public void println() {
            System.out.println("正常的实现接口方法");
        }
    }
    static class Lambda1 {
        /**
         * Lambda表达式在java中本质上是作为一个函数式接口的实现。
         * 函数式接口:一个接口中有且只有一个抽象方法,称为函数式接口。
         * 使用Lambda表达式必须是实现函数时接口
         * Lambda表达式有六种情况分别如下
         * */
        /**
         * 第一中情况,无参,无返回值的方法
         */
        LambdaTest1 lamdaTest1 = () -> System.out.println("第一中情况,无参,无返回值的方法");
        /**
         * 第二中情况,有参,无返回值
         */
        LambdaTest2 lamdaTest2 = (a, b) -> System.out.println(a + b);
        /**
         * 第三种给,类型推断:数据类型可以省略,由编译器推断得出---也就是方法中可以不写数据类型
         */
        //正常写法
        Consumer<String> lamdaTest3 = new Consumer<String>() {//此处的数据类型是由泛型
            @Override
            public void accept(String s) {
                System.out.println(s);
            }
        };
        // Lambda表达式写法
        Consumer<String> lamdaTest3_1 = (s) -> System.out.println(s);
        /**
         * 第四种情况若只有一个参数的情况小括号可以省略
         */
        Consumer<String> lamdaTest4 = s -> System.out.println(s);
        /**
         * 第五种情况Lambda可以有多个参数,方法体可以有多个执行语句,并且可以有返回值
         */
        LambdaTest3 lamdaTest5 = (a, b) -> {
            System.out.println("多个执行语句的lambda表达式带返回值的写法");
            return (a + b);
        };
        /**
         * 第六种情况当Lambda体只有一条执行语句时若有return和大括号都可以省略
         */
        LambdaTest3 lamdaTest6 = (a, b) -> a + b;

    }

    public static void main(String[] args) {
        Lambda1 lambda1 = new Lambda1();
        lambda1.lamdaTest1.println();


        System.out.println("********************************************");
        lambda1.lamdaTest2.println1(11,22);


        System.out.println("********************************************");
        lambda1.lamdaTest3.accept("正常内部类操作方法");


        System.out.println("********************************************");
        lambda1.lamdaTest3_1.accept("Lambda表达式的操作方法");


        System.out.println("********************************************");
        lambda1.lamdaTest4.accept("省略小括号");


        System.out.println("********************************************");
        int i = lambda1.lamdaTest5.println1(22, 33);
        System.out.println(i);


        System.out.println("********************************************");
        int x = lambda1.lamdaTest6.println1(33, 44);
        System.out.println("省略return语句的方法  x = " + x);


        System.out.println("");
        System.out.println("");
        System.out.println("================方法引用=====================");



    }

}

抽象方法,注意:注解不是必须的,只要满足函数式接口的都能使用 Lambda表达式。该注解只是用来校验一下该接口是否是函数式接口。不满足函数的接口时idea会报错提示。

代码中的抽象方法定义基本和下列一致只是有没有返回值或参数的区别。

@FunctionalInterface//声明一个函数式接口时可以使用:@FunctionalInterface 注解,该注解只作为校验定义的接口是否是函数式接口
public interface LambdaTest1 {
    public void println ();
}

该文章为本人学习Lambda表达式的的一个笔记,不足支出欢迎大佬指正。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值