Java 8:使用方法引用获取Operator-Function-Object



我想知道在Java 8中是否有可能获得标准操作符(+,-,<,>,…)的方法引用。

我想要像Foo::+那样得到它,其中Foo是我可以得到它的某个定义的地方。由于Java不允许在方法名中使用特殊字符,我认为这是不可能的,是吗?

如果上述方式不存在:是否存在像Foo::plus那样定义标准操作符的地方?

我知道有可能将其定义为lambda ((x, y) -> x + y),但在我看来,在某些情况下,使用方法引用运算符可能会更有表现力,就像在Haskell中一样。

我相信您正在寻找int Integer.sum(int, int)和类似的方法,这些方法确实是由API提供的。

您的列表中缺少了许多方法,但是JDK没有提供最后一英寸的便利是很常见的,因为即使没有这些方法,它的大小也是巨大的。

如果这有什么安慰的话,我的每个项目都有一个Util类,其中我转储了这些花絮。

一个干净的方法是Operators助手类,它包含所有操作符的方法。然后你可以使用这些方法作为参考。当然,标准库类会比自己的helper类更好,但至少您可以决定该helper类的名称,因此您可以选择对您来说最有表现力的名称。

标准操作符仅适用于原语和装箱原语,并且您无法动态查找哪些操作符适用于所讨论的对象。

编辑:如果你想知道你可以调用什么方法来执行标准的操作符函数,你可以做一个instanceof检查到可比接口的大于/小于或等于操作符(http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html)。

相关内容

最新更新