我有這樣的枚舉:設置的MathContext到BinaryOperator參考方法
public enum Operator {
add("+", BigDecimal::add),
subtract("-", BigDecimal::subtract),
multiply("*", BigDecimal::multiply),
divide("/", BigDecimal::divide),
mod("%", BigDecimal::remainder);
Operator(final String symbol, final BinaryOperator<BigDecimal> operation) {
this.symbol = symbol;
this.operation = operation;
}
public BinaryOperator<BigDecimal> getOperation() {
return operation;
}
}
我想用一些MathContext
,可以很容易地做到這一點執行這樣的操作時:
MathContext mc = MathContext.DECIMAL32;
BigDecimal t0 = new BigDecimal(100);
BigDecimal t1 = new BigDecimal(2);
BigDecimal result = t0.add(t1, mc);
但是,如果我想在枚舉中使用對BinaryOperator
的引用我看不到給它的方式MathContext
:
BigDecimal result = enum.getOperation().apply(t0, t1);
在文檔或適用的方法中,我可以看到任何選項。
創建一個使用具有您需要簽名的功能接口。 –
您也可以使用會使用MathContext和運算符枚舉的輔助類來包裝它。 – hya
@JBNizet BiFunction不會工作,因爲他需要類似TriFunction的東西,因爲有三個參數而不是兩個(BinaryOperator實現BiFunction,區別只是泛型參數都是相同的類型)。 –