lambda表达式

1、lambda 表达式1 , 

Arrays.asList("s","vo").forEach(System.out::println);       // A
Arrays.asList("s","vo").forEach(o->System.out.println(o));  // B

    这里涉及到3个知识点

    a. java8新增了函数指针这个概念,就是使用 “::” 来引用一个方法,入 System.out::println

    b. java8 新增了 函数式接口(通过注解@FunctionalInterface 的接口,只允许含有一个方法,此接口表示函数式接口)System.out::println 会返回一个 “函数式” ,我们可以看forEach 的参数是什么:

void forEach(Consumer<? super T> action);

        Consumer 是一个被注解为 @FunctionalInterface 的接口。 编译器会将 “System.out::println” 实现成一个 Consumer :

 

new Consumer(String s){
    System.out.println(s);
}

 c.lambda 表达式目前看来都是在一个方法调用时的参数中,该方法必须可以接收一个 “函数式接口” 作为参数。

 

个人看法:

lambda 的表达式,形式类似于  () -> {} 

()表示输入参数 ,{}  表示函数体。 如果()中的参数只有1个,那么可以省略括号。 相同,如果 {} 内部只有一条语句,也可以省略花括号。

这就属于lambda 表达式。

 

下面是一个2个参数的 lambda 的表达式例子:

 

Arrays.asList("s","vo").sort((f,o)-> f.length() - o.length());

 其最终都是由编译器自动去实现 “函数式接口” 接口。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值