为什么 Java 8 引入了 *Integer.sum(int a, int b)*

2022-09-02 12:01:20

我刚刚注意到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;
}

这种方法有什么意义?为什么我应该调用此方法而不是使用运算符?我能想到的唯一可能性是,例如,当混合字符串和int时,运算符会改变含义,因此++

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::sumIntBinaryOperator

例如:

int sum = IntStream.range(1,500).reduce(0,Integer::sum);

当然,此示例可以使用而不是 reduce。我刚刚注意到IntStream.sum的Javadoc提到这个确切的减少等同于sum()。.sum()


答案 2