箭头操作符'->'在Java中有什么作用?

在搜索一些代码时,我遇到了箭头操作符,它到底是做什么的?我以为Java没有箭头操作符。

return (Collection<Car>) CollectionUtils.select(listOfCars, (arg0) -> {
return Car.SEDAN == ((Car)arg0).getStyle();
});

Details: Java 6, Apache Commons Collection, IntelliJ 12

原来IntelliJ 12支持Java 8, Java 8支持lambdas,并且正在“折叠”谓词并将它们显示为lambdas。下面是“未折叠”代码。

return (Collection<Car>) CollectionUtils.select(listOfCars, new Predicate() {
public boolean evaluate(Object arg0) {
return Car.SEDAN == ((Car)arg0).getStyle();
}
});
359300 次浏览

这是Java 8中引入的新lambda表达式的语法的一部分。有一些在线教程来掌握它,这里有一个链接到一个。基本上,->将参数(左边)与实现(右边)分开。

使用lambda表达式的一般语法是

(Parameters) -> { Body },其中->分隔参数和lambda表达式体。

参数被括在括号中,这与方法的方式相同,lambda表达式体是一个用括号括起来的代码块。

它是一个lambda表达式。

这意味着,在listOfCars中,arg0是该列表的一项。 对于这个项目,他要做的是->,即括号内的内容

在这个例子中,他将返回一个符合条件的汽车列表

Car.SEDAN == ((Car)arg0).getStyle();

我相信,这个箭头的存在是因为你的IDE。IntelliJ IDEA用一些代码来做这样的事情。这叫做代码折叠。您可以单击箭头展开它。

当您想要实现一个功能接口时,这一点也很有用

Runnable r = ()-> System.out.print("Run method");

等于

Runnable r = new Runnable() {
@Override
public void run() {
System.out.print("Run method");
}
};

新建操作符用于Java 8中添加的lambda表达式

Lambda表达式是简写方法。
它间接用于实现功能界面

主要语法:(参数)->{语句;}

这里有一些你应该知道的基本编写有效lambda表达式的规则

箭头操作符用于创建lambda表达式,将参数与lambda体链接/分离。 语法:(parameters) ->{}表达式; 这也是在java中实现onClickListeners等函数接口的有效方法