[英]What does the arrow operator, '->', do in Java?
在浏览一些代码时,我遇到了箭头运算符,它到底是做什么的? 我以为 Java 没有箭头操作符。
return (Collection<Car>) CollectionUtils.select(listOfCars, (arg0) -> {
return Car.SEDAN == ((Car)arg0).getStyle();
});
详细信息:Java 6、Apache Commons Collection、IntelliJ 12
更新/回答:事实证明,IntelliJ 12 支持 Java 8,它支持 lambda,并且正在“折叠”谓词并将它们显示为 lambda。 下面是“未折叠”的代码。
return (Collection<Car>) CollectionUtils.select(listOfCars, new Predicate() {
public boolean evaluate(Object arg0) {
return Car.SEDAN == ((Car)arg0).getStyle();
}
});
这是新 lambda 表达式语法的一部分,将在 Java 8 中引入。有几个在线教程可以掌握它,这里有一个链接。 基本上, ->
将参数(左侧)与实现(右侧)分开。
使用 lambda 表达式的一般语法是
(Parameters) -> { Body }
其中->
分隔参数和 lambda 表达式主体。
参数用括号括起来,这与方法相同,lambda 表达式主体是用大括号括起来的代码块。
当您想要实现功能接口时,这也很有用
Runnable r = ()-> System.out.print("Run method");
相当于
Runnable r = new Runnable() {
@Override
public void run() {
System.out.print("Run method");
}
};
我相信,这个箭头的存在是因为你的 IDE。 IntelliJ IDEA 用一些代码来做这样的事情。 这称为代码折叠。 您可以单击箭头将其展开。
这是一个 lambda 表达式。
这意味着,在 listOfCars 中,arg0 是该列表的项目之一。 他将要使用该项目,因此->,括号内的任何内容。
在此示例中,他将返回符合条件的汽车列表
Car.SEDAN == ((Car)arg0).getStyle();
在 java 8 中添加了用于 lambda 表达式的新运算符
Lambda 表达式是方法编写的简写方式。
间接用于实现功能接口
主要语法:(参数)-> { 语句; }
您应该了解一些编写有效 lambda 表达式的基本规则。
当您想从非 UI 线程更新您的 UI 时,使用 runOnUiThread()。 例如,如果您想从后台线程更新您的 UI。 你也可以使用 Handler 来做同样的事情。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.