Почему Java 8 представила * Integer.sum(int a, int b) *
Я только заметил, что JDK8 ввел этот метод для класса Integer
:
/**
* Adds two integers together as per the + operator.
*
* @param a the first operand
* @param b the second operand
* @return the sum of {@code a} and {@code b}
* @see java.util.function.BinaryOperator
* @since 1.8
*/
public static int sum(int a, int b) {
return a + b;
}
В чем смысл этого метода? Почему я должен использовать этот метод вместо использования оператора +
? Единственная возможность, о которой я могу думать, это то, что, например, при смешивании строк и ints оператор +
меняет значение, поэтому
System.out.println("1"+2+3); // prints 123
System.out.println("1"+Integer.sum(2,3)); // prints 15
но с использованием скобок все равно будет работать
System.out.println("1"+(2+3)); // prints 15
Ответы
Ответ 1
Это может быть полезно как ссылка метода (Integer::sum
), переданная методу, который требует соответствующего функционального интерфейса (IntBinaryOperator
).
Например:
int sum = IntStream.range(1,500).reduce(0,Integer::sum);
Конечно, этот пример может использовать .sum()
вместо сокращения. Я просто заметил, что Javadoc для IntStream.sum упоминает это точное сокращение как эквивалентное sum().