Lambda表达式

传统接口访问

 1package com.atguigu.juc.lambda;
2
3public class lambdademo {
4    public static void main(String[] args) {
5        Foo foo = new Foo() {
6            @Override
7            public void sayHello() {
8                System.out.println("你好");
9            }
10        };
11    }
12}/**Output
13你好
14*/
//~
15
16interface Foo {
17    public void sayHello();
18}

这是我们直接用匿名内部类实现接口未实现的方法进行接口的实例化. 下面我们来看看一个更为优质的代码

函数式接口

何为函数式接口?通俗来讲就是接口中只有一个未实现的方法

1// 函数式接口
2interface Foo {
3    public int add(int x, int y);
4
5}
1// 非函数式接口(即普通标准接口)
2interface Foo {
3    public int add(int x, int y);
4    public void sayHello();
5
6}

java提供了一个注解@FunctionalInterface,让我们很清楚地知道一个接口是否为函数式接口

1@FunctionalInterface
2interface Foo {
3    public int add(int x, int y);
4}

注意:函数式接口并不是说该接口中只有一个方法,而是一个未实现的方法,下面这个接口也属于函数式接口

 1@FunctionalInterface
2interface Foo {
3    // 未实现方法
4    public int add(int x, int y);
5
6    // 已实现方法
7    public default int dev(int x, int y) {
8        return x / y;
9    }
10
11    // 已实现方法
12    public static int mul(int x, int y) {
13        return x * y;
14    }
15
16}

Lambda表达式

Lambda表达式是jkd1.8的新特征,Lambda表达式着力于简化代码的编写,去除冗余代码.

上面例子的优化代码如下

 1package com.atguigu.juc.lambda;
2
3public class lambdademo {
4    public static void main(String[] args) {
5
6        Foo foo = () -> {
7            System.out.println("你好");
8        };
9        foo.sayHello();
10
11    }
12}/**Output
13你好
14*/
//~
15
16interface Foo {
17    public void sayHello();
18}

注意:运用Lambda表达式实现接口中未实现的方法的前提是Foo接口是函数式接口,如果该接口不是函数式接口,使用Lambda表达式就会出错.

上面使用Lambda表达式的例子中,接口的未实现的方法没有参数也没有返回值,那有返回值和参数如何使用Lamda表达式呢?

我们来看一下代码

 1package com.atguigu.juc.lambda;
2
3public class lambdademo {
4    public static void main(String[] args) {
5
6        Foo foo = (int x ,int y) -> {return x + y;};
7        System.out.println(foo.add(35));
8
9    }
10}/**Output
118
12*/
//~
13
14interface Foo {
15    public int add(int x, int y);
16}

Lambda表达式使用总结:
拷贝小括号,写死右箭头,落地大括号

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值