箭头运算符' - >'在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();
    }
});

#1 热门回答(81 赞)

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


#2 热门回答(25 赞)

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


#3 热门回答(12 赞)

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

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

相当于

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