2016-10-18 245 views
4

由于Java 8,Integer类有一个静态sum方法,增加了两个整数:是否有一个乘法类似于Integer :: sum?

public static int sum(int a, int b) { 
    return a + b; 
} 

我可以通过这种方法来经由Integer::sum我找到比(a, b) -> a + b更可读的高阶函数。

有没有类似的乘法静态方法,所以我不必写(a, b) -> a * b?我在Integer课中找不到一个。

回答

5

Math::multiplyExact

static int multiplyExact(int x, int y)

返回参数的产品,抛出一个异常,如果结果溢出一个int。

+1

除了这与'(a,b) - > a * b'不一样,因为它在溢出时的行为。 –

+1

是的。问题不是很清楚应该如何处理溢出,尽管 –

+2

我不能确定'Math :: multiplyExact'在实践中不足以满足OP,但似乎有理由假设他想要一个具有在他希望取代的lambda的各个方面都有相同的语义。用一个可能抛出的方法引用替换一个永远不会抛出的lambda似乎对我来说有点危险。 –

5

你可以自己做它:

public static int mult(int a, int b) { 
    return a * b; 
} 

这似乎是显而易见回想起来可是,我不相信外面其实有它乘你,除了了JDK,包括方法Math#multiplyExactMath::multiplyExact),虽然这可能比你需要的更多。

相关问题