java8 lamda表达式相等_java8之lambda表达式(lambda表达式语法)

到目前为止,在Java中向其他代码传递一段代码并不是很容易。你不可能将代码块到处传递。由于java是一个面向对象的语言,因此你不得不构建一个属于某个类的对象,由它的某个方法来包含所需的代码。

lambda表达式帮我们解决了这个问题,可以直接传递代码块!Java中lambda表达式的格式:参数,箭头(->),以及一个表达式。示例:

(String first,String second) -> Integer.compare(first.length(), second.length())

如果负责计算的代码无法用一个表达式表示,那么可以用编写方法的方式来编写:即用{}包裹代码并明确使用return语句,例如:

(String first,String second) -> {

if(first.length() 

else if(first.length() > second.length()) return 1;

}

如果lambda表达式没有参数,你仍可以提供一对空的小括号,如同不含参数的方法那样:

() -> {for(int i=0; i<1000;i++) doWlrk();}

如果一个lambda表达式的参数类型是可以被推导的,那么就可以省略它们的类型,例如:

Comparator comp = (first,second) ->

Integer.compare(first.length(),second.length());

这里,编译器会推导出first和second必须是字符串,因为lambda表达式被赋给了一个字符串比较器。如果某个方法只含有一个参数,并且该参数的类型可以被推导出来,你甚至可以省略小括号:

EventHandler listener = event -> System.out.println("Thanks for clicking!");

注意:你可以像对待方法参数一样向lambda表达式的参数添加注解或者final修饰符,如下:

(final String name) -> ....

(@NonNull String name) -> ...

永远不需要为一个lambda表达式执行返回类型,它总是会从上下文中被推导出来。例如,表达式:

(String first,String second) -> Integer.compare(first.length(),second.length())

可以被使用在期望结果类型为int的上下文中。

注意:在lambda表达式中,只在某些分支中返回值(其它分支没有返回值)是不合法的,示例:

//不合法

(int x) -> {if(x >= 0) return 1;}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值