Python Java 中等效的运算符模块,用于基本方法引用

Python operator module equivalent in Java for basic method references

截至 Java 8,存在方法引用。我有一个简单的接口,我想使用现有的(最好在 java.something 包中)方法引用来实现。

public class Calculator {
    private interface BinaryFunction<A, B, R> {
        R apply(A a, B b);
    }

    private <A, B, R> R apply(BinaryFunction<A, B, R> binaryFunction, A a, B b) {
        return binaryFunction.apply(a, b);
    }

    public static void main(String [] args) {
        Calculator calculator = new Calculator();
        calculator.apply((a, b) -> a + b, 1, 2);            // 3
        calculator.apply(Math::addExact, 1, 2);             // 3
        calculator.apply((a, b) -> a || b, true, false);    // true
//        calculator.apply(?::?, true, false);              // true
    }
}

Math::addExact+ 不同,但对我来说足够接近了——我实际上更喜欢为了我的目的抛出 ArithmeticException("integer overflow")

如果这是Python,我会使用operator模块,但我不知道Java中是否有这样的东西。

那么 java.something 包中是否有任何静态方法可以进入 ?::? 部分相当于 || 运算符?

为此,我使用 java.lang.Boolean.logicalOr(boolean, boolean) 方法。

所以在你的情况下你会使用:

calculator.apply(Boolean::logicalOr, true, false);