Java中的箭头运算符' – >'是做什么的?

在通过一些代码search时,我碰到了箭头运算符,它究竟做了什么? 我以为Java没有箭头运算符。

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

详细信息 :Java 6,Apache Commons Collection,IntelliJ 12

更新/回答:事实certificate,IntelliJ 12支持Java 8,它支持lambda,并“折叠”Predicates并将它们显示为lambdaexpression式。 以下是“未折叠”的代码。

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

这是新的lambdaexpression式的语法的一部分,将在Java 8中引入。有几个在线教程来获取它,这是一个链接 。 基本上, ->将参数(左侧)与实际expression式(右侧)分开。

我相信,这个箭头是因为你的IDE而存在的。 IntelliJ IDEA用一些代码来做这样的事情。 这就是所谓的代码折叠。 您可以点击箭头将其展开。

这是一个lambdaexpression式。

这意味着,从listOfCars,arg0是该列表中的项目之一。 有了这个项目,他会做的,因此 – >,无论是在括号内。

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

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

当你想要实现一个接口的时候,这个也很有用

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

相当于

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