Java基础-Lambda表达式

Lambda表达式

Lambda表达式是JDK1.8之后的新特性,它的出现就是为了避免匿名内部类的定义,它属于函数式编程的概念。

函数式接口(Functional Interface)是Java8 Lamda表达式的关键。
函数式接口的定义:

  • 任何接口,如果只含有唯一一个抽象方法,它就是一个函数式接口。

对于函数式接口,我们可以通过lambda表达式来简化创建它的匿名实现内部类。

public class LambdaTest01 {

    //静态内部类
    static class Function2 implements IFunction {
        @Override
        public void function(int arg) {
            System.out.println("静态内部类类执行实现方法,参数为" + arg);
        }
    }

    public static void main(String[] args) {

        //1.实现类
        IFunction iFunction1 = new Function1();
        iFunction1.function(1);


        //2.静态内部类
        IFunction iFunction2 = new Function2();
        iFunction2.function(2);

        //3.局部内部类
        class Function3 implements IFunction {
            @Override
            public void function(int arg) {
                System.out.println("局部内部类类执行实现方法,参数为" + arg);
            }
        }
        IFunction iFunction3 = new Function3();
        iFunction3.function(3);

        //4.匿名内部类
        IFunction iFunction4 = new IFunction() {
            @Override
            public void function(int arg) {
                System.out.println("匿名内部类类执行实现方法,参数为" + arg);
            }
        };
        iFunction4.function(4);


        //5.lambda方式
        IFunction iFunction5 = (int arg) -> {
            System.out.println("lambda表达式实现方法,参数为" + arg);
        };
        iFunction5.function(5);

    }
}

//定义一个函数式接口
interface IFunction {
    void function(int arg);
}

//实现类 与分java文件写一致
class Function1 implements IFunction {

    @Override
    public void function(int arg) {
        System.out.println("实现类执行实现方法,参数为" + arg);
    }
}

上述代码,就是为了实现对方法实现的一步步简化,重新写实现类–》静态内部类–》局部内部类–》匿名内部类–》lambda表达式,这都是一步步的简化,这也展现了lambda表达式的简化功能。上述是演示了带参数的方法,无参数的方法也十分好实现,博主不再演示代码。

lambda表达式还有简化方式
原代码:

IFunction iFunction5 = (int arg) -> {
    System.out.println("lambda表达式实现方法,参数为" + arg);
};
iFunction5.function(5);
  • 简化参数类型
//1.简化参数类型
IFunction iFunction6 = (arg) -> {
    System.out.println("lambda表达式实现方法,参数为" + arg);
};
iFunction5.function(6);
  • 简化参数括号
//2.简化参数括号
IFunction iFunction7 = arg -> {
    System.out.println("lambda表达式实现方法,参数为" + arg);
};
iFunction5.function(7);
  • 简化方法体括号
//3.简化方法体括号
IFunction iFunction8 = arg -> System.out.println("lambda表达式实现方法,参数为" + arg);
iFunction5.function(8);

注意:

  • 使用lambda表达式的前提是,实现函数式接口。
  • 使用lambda表达式简化参数类型的时候,要么把参数列表的类型全部去掉,要么都不去掉。
  • 使用lambda表达式简化参数列表括号时,要满足参数只有一个的条件,否则不能去掉,没有参数或者多个参数时都不能去掉。
  • 使用lambda表达式简化方法体括号时,要满足实现代码只有一行,如有多行代码实现,不能去掉方法体的{}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值