Integer::sum有没有乘法类似的函数?

7
自Java 8以来,Integer类具有静态的sum方法,可以将两个整数相加:
public static int sum(int a, int b) {
    return a + b;
}

我可以通过Integer::sum将此方法传递给高阶函数,我发现这比(a, b) -> a + b更易读。

是否有类似的静态方法可用于乘法,以便我不必编写(a, b) -> a * b?我在Integer类中找不到这样的方法。

2个回答

6

Math::multiplyExact

static int multiplyExact(int x, int y)

返回两个参数的乘积,如果结果超过int类型的范围,将抛出异常。


1
除了这个不同于(a, b) -> a * b的地方在于它在溢出时的行为。 - John Bollinger
1
真的。问题并不是很清楚如何处理溢出。 - OneCricketeer
2
我无法确定在实践中Math::multiplyExact是否足够满足OP的需求,但似乎合理假设他想要一个与他试图替换的lambda在每个方面都具有相同语义的方法。用可能会抛出异常的方法引用替换永远不会抛出异常的lambda对我来说有点危险。 - John Bollinger
2
@JohnBollinger 个人而言,我更喜欢使用异常处理来代替(可能)未检测到的溢出。不过,这也值得一提。 - beatngu13

5
你可以自己制作:
public static int mult(int a, int b) {
    return a * b;
}

事后看来这似乎很明显,但除此之外,我认为实际上没有一个包含jdk方法可以为您进行乘法,除了Math#multiplyExact (Math::multiplyExact),虽然它可能比您需要的多。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接