私は非常に同じに見える2つの方法があります:(a、b)関数をメソッドに渡して使用するにはどうすればよいですか?
public Book minus(BigDecimal parameterA, BigDecimal parameterB, BigDecimal parameterC) {
return new Book(
this.a.subtract(parameterA),
this.b.subtract(parameterB),
this.c.subtract(parameterC)
);
}
と
public Book plus(BigDecimal parameterA, BigDecimal parameterB, BigDecimal parameterC) {
return new Book(
this.a.add(parameterA),
this.b.add(parameterB),
this.c.add(parameterC)
);
}
私はグループに希望引数として関数を受け取り、単一のヘルパーメソッドにこれら:
private Book apply(Function function, BigDecimal parameterA, BigDecimal parameterB, BigDecimal parameterC);
a、b &cはBigDecimalクラスのフィールドです。
このような方法をどのように渡すことができますか?
私は、Java 8
が
は、2つの入力または
BinaryOperator
を取るようあなたが、またはこのケースでBiFunctionを機能を使用することができます
public Book minus(BigDecimal parameterA, BigDecimal parameterB, BigDecimal parameterC) {
return apply(BigDecimal::subtract, parameterA, parameterB, parameterC);
}
public Book minus(BigDecimal parameterA, BigDecimal parameterB, BigDecimal parameterC) {
return apply(BigDecimal::add, parameterA, parameterB, parameterC);
}
private Book apply(BinaryOperator<BigDecimal> operator, BigDecimal parameterA, BigDecimal parameterB, BigDecimal parameterC) {
return new Book(
operator.apply(a, parameterA),
operator.apply(b, parameterB),
operator.apply(c, parameterC)
);
}
'this.a'の種類は何でそれを呼び出すことができますか?これは 'minus'や' plus'メソッドを持たないため、BigDecimalではありません。 – Tunaki