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();
    }
});

原文由 Mike Rylander 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 935
2 个回答

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

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

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

参数用括号括起来,这与方法相同,lambda 表达式主体是用大括号括起来的代码块。

原文由 Óscar López 发布,翻译遵循 CC BY-SA 4.0 许可协议

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

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

相当于

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

原文由 Justin Patel 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题