Lambda的解释及简单使用

1、概念

Lambda简单来说,就是匿名函数,也就是把一个实现了细节的函数赋值给一个函数式接口(只有一个接口函数需要被实现的接口被称为函数式接口)

2、实际使用

希望各位能通过以下的小项目来更好的理解什么是Lambda及如何去写、去用

FunctionInterface接口类

/**
 *
 * @FunctionalInterface
 * 这个注解表示这个接口是函数式接口,即该接口的方法只能有一个;
 * 你问我为什么只能有一个方法,你想想你要怎么用下面的赋值表达式写出两个实现方法的赋值
 *
 *         FunctionInterface lambdaFunctionInterface = (s) -> {
 *             System.out.println(s);
 *         };
 *
 * 你能确定这个Lambda表达式右边的方法实现细节是赋给sayHello呢还是赋给doSomething,
 * 在Java8里,Lambda表达式右边的方法名都省略了,怎么指定它的接口方法是谁,
 * 所以为了避免这种情况,目前Java8的Lambda表达式的接收类型只能是只有一个方法的接口
 *
 */
@FunctionalInterface
public interface FunctionInterface {

    void sayHello(String s);

    //void doSomething(String s);

}

TestLambda测试类 

public class TestLambda {

    public static void main(String[] args) {

        /**
         *         在Java7里,想要实现一个接口的方法并调用这个被实现的方法,
         *         首先需要先新建一个实现类(例如本项目里的FunctionInterfaceImpl类),
         *         然后该类需要实现某个接口(例如本项目里的FunctionInterface接口类),
         *         再然后需要在实现类里补充被实现接口的方法的实现细节,
         *         最后,想调用实现了细节的方法,需要先给实现类新建一个对象,把该对象赋给这个实现类的接口类,
         *         通过调用接口类的方法从而调用到实现类的实现方法,从而做出某些理想中的运算
         */
        class FunctionInterfaceImpl implements FunctionInterface {

            @Override
            public void sayHello(String s) {
                System.out.println(s);
            }

        }
        FunctionInterface functionInterface = new FunctionInterfaceImpl();
        functionInterface.sayHello("你好,张三");

        /**
         *         在Java8的新特性Lambda表达式里,
         *         Lambda表达式把实现方法的细节直接像变量一样直接赋值给名为lambdaFunctionInterface的FunctionInterface接口,
         *         直接省略了新建类,新建对象的过程
         */
        FunctionInterface lambdaFunctionInterface = (s) -> {
            System.out.println(s);
        };
        /**
         *         如果要用Java7表示,大概如下
         *
         *         FunctionInterface lambdaFunctionInterface = public void sayHello(String s) {
         *             System.out.println(s);
         *         }
         */
        //单行表达式可以省略{},如下:
        //FunctionInterface lambdaFunctionInterface = (s) -> System.out.println(s);
        lambdaFunctionInterface.sayHello("你好,李四");

        /**
         * Lambda表达式虽然简化了实现接口的过程,但Lambda表达式的写法还是太复杂了,所以Java8还有更简单的写法--方法引用
         */
        FunctionInterface methodFunctionInterface = System.out::println;
        methodFunctionInterface.sayHello("你好,王五");

    }

}

创作不易,如果这篇文章对你有帮助,希望能点个赞帮助文章的推广,如果文章有错漏,希望各位能批评指正,谢谢大家。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值