2016-06-28 22 views
2

從Java 8開始,存在方法參考。我有一個簡單的接口,我希望使用現有的(最好在一個java.something包中)方法引用來實現。用於基本方法參考的Java等效Python運算符模塊

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包中有沒有靜態方法,可以在?::?部分中找到,這相當於||運算符?

+0

你問了,做''||在對輸入的方法? – dimo414

+0

@ dimo414是的。它應該是一個內置的包。 – michaelsnowden

回答