Lambda表达式

lambda表达式是用来简化内部类书写的,啥是匿名内部类?

没有名字的接口实现。传统实现一个接口,由于接口是用来规范实现的,则要实现一个接口就得先有一个类来继承它,然后重写它的方法,要使用还得再new一个实现类的对象

通过匿名内部类实现这个接口就简化了这个过程,直接new一个对象,在new的过程中重写方法:

InterfaceDemo demo=new InterfaceDemo() {
            @Override
            public int add(int a, int b) {
                return a+b;
            }
        };
    //调用重写后的方法
    System.out.println(demo.add(1,1));

说明:Demo是接口名称,重写了其中的int add()方法


Lambda最基础格式:(int a,int b)->{return a+b;}

InterfaceDemo demo =()->{
        //方法体
    }

三大部分:括号、右箭头、方法体

括号:用来描述参数列表,表示原始接口内方法的参数

右箭头:Lambda运算符,可以叫做箭头符号

方法体:方法重写,具体实现


大佬分水岭:精简Lambda的语法(规则)

1,参数类型可以省略,依据上面例子为例:

InterfaceDemo demo =(a,b)->{
    return a+b;
}

2,假如只有一个参数,()括号可以省略

InterfaceDemo demo =a->{
        //方法体
        System.out.println("收到了参数a: " + a);
    }

3,如果方法体只有一条语句,{}大括号可以省略,依据2再精简

InterfaceDemo demo =a->System.out.println("收到了参数a: " + a);

4,如果方法体中唯一的语句是return返回语句,那省略大括号的同时return也要省略,依据a+b的例子为例

InterfaceDemo demo =(a+b)->a+b;

防呆段落:上面的代码都是实现了一个匿名内部类,使用实现的方法:demo.方法名


方法引用语法:对象::方法,如果是static方法,语法:类名::方法

问题引入:对于一些类,它有些方法实现得很好,我看着眼红。或者我想把这个接口的方法集中起来,封装成通用方法放到一个类管理。这种情况就可以用到方法的引用,以下是步骤

1.先封装一个方法实现类

//此方法在一个ObjectDemo的类中
public int add(int a, int b){
    return a+b;
}

2.用Lambda表达式进行方法引用

InterfaceDemo demo = ObjectDemo::add;

.3.调用InterfaceDemo接口的add方法

demo.add(1,1)

防呆段落:上面步骤3调用的是InterfaceDemo接口中的方法名,不是引用的方法名


构造方法引用:语法:类名::new,new后面不加任何东西了,具体引用哪个构造方法看接口内要实现的方法的参数情况

问题引入:为什么会用到构造方法引入?因为有可能某个类的构造方法恰好可以实现

具体实现和方法引用差不多

暂时没有用过

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值