在搜索一些代码时,我遇到了箭头操作符,它到底是做什么的?我以为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();
    }
});

当前回答

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

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

等于

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

其他回答

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

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表达式的编写,有一些基本规则是你应该知道的。

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

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

它是一个lambda表达式。

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

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

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