Как создать бинарный оператор для добавления BigInteger - PullRequest
0 голосов
/ 19 января 2020

Я хочу создать BinaryOperator<BigInteger> biOp, чтобы сложить BigInteger значения. Например, у меня будет огромный список или массив различных значений BigInteger, и я хочу добавить их все, используя al oop и biOp.

Результат, например, для двух значений должен выглядеть примерно так:

System.out.println(biOp.apply(BigInteger.ONE, BigInteger.ONE));
// outputs 2

Как правильно создать или инициализировать biOp?

1 Ответ

7 голосов
/ 19 января 2020

Самый простой способ - использовать ссылку на метод BigInteger::add:

BinaryOperator<BigInteger> binOp = BigInteger::add;

Это работает потому, что при использовании имени класса для создания ссылки на метод экземпляра метода (т.е. не метод static), метод apply примет дополнительный параметр для экземпляра, для которого вызывается метод. Таким образом, хотя метод add принимает один параметр BigInteger, ссылка на этот метод принимает два параметра BigInteger.

...