我想知道在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)。