在搜索一些代码时,我遇到了箭头操作符,它到底是做什么的?我以为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, Java 8支持lambdas,并且正在“折叠”谓词并将它们显示为lambdas。下面是“未折叠”代码。

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

当前回答

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

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

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

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

其他回答

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

它是一个lambda表达式。

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

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

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

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

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

(参数)-> {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用一些代码来做这样的事情。这叫做代码折叠。您可以单击箭头展开它。