Существует ли ссылка на метод Java для добавления арифметического c? - PullRequest
5 голосов
/ 21 января 2020

При использовании потоков в Java, возможно ли использовать ссылку на метод для сложения арифметического c (а не лямбда)?

В данный момент (для суммирования содержимого потока) Я использую stream.reduce(0, (x, y) -> x + y), но я хотел бы использовать что-то вроде stream.reduce(0, Math::add), если оно существует.


В более общем, но похожем примечании, каждый метод / операция в Java имеет ссылку на метод?

Ответы [ 2 ]

6 голосов
/ 21 января 2020

Да, вы можете использовать Integer.sum,

stream.reduce(0, Integer::sum)

Или вы можете преобразовать поток в IntStream и просто позвонить sum

stream.mapToInt(Integer::intValue).sum();
4 голосов
/ 21 января 2020

Вы можете использовать Math.addExact

stream.reduce(0, Math::addExact)
...