箭头运算符' - >'在Java中做什么?

时间:2013-02-28 21:33:18

标签: java intellij-idea apache-commons java-8 apache-commons-collection

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

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

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

更新/答案:事实证明,IntelliJ 12支持支持lambda的Java 8,并且“折叠”谓词并将其显示为lambda。以下是“未折叠”代码。

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

5 个答案:

答案 0 :(得分:98)

这是新的lambda表达式的语法的一部分,将在Java 8中引入。有几个在线教程可以解决它,这里是一个link。基本上,->将参数(左侧)与实际表达式(右侧)分开。

答案 1 :(得分:31)

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

答案 2 :(得分:22)

当您想要实现接口

时,这个也很有用
Runnable r = ()-> System.out.print("Run method");

相当于

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

答案 3 :(得分:12)

这是一个lambda表达式。

这意味着,从listOfCars中,arg0是该列表的一个项目。 有了这个项目,他将会这样做,因此 - &gt ;,括号内的任何内容。

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

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

答案 4 :(得分:0)

在Java 8中添加了lambda表达式的新运算符

Lambda表达式是方法编写的简短方式。
它间接用于实现functional interface

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

您应该了解一些基本的rules for effective lambda expressions writting