由于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
课中找不到一个。
由于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
课中找不到一个。
static int multiplyExact(int x, int y)
返回参数的产品,抛出一个异常,如果结果溢出一个int。
你可以自己做它:
public static int mult(int a, int b) {
return a * b;
}
这似乎是显而易见回想起来可是,我不相信外面其实有它乘你,除了了JDK,包括方法Math#multiplyExact
(Math::multiplyExact
),虽然这可能比你需要的更多。
除了这与'(a,b) - > a * b'不一样,因为它在溢出时的行为。 –
是的。问题不是很清楚应该如何处理溢出,尽管 –
我不能确定'Math :: multiplyExact'在实践中不足以满足OP,但似乎有理由假设他想要一个具有在他希望取代的lambda的各个方面都有相同的语义。用一个可能抛出的方法引用替换一个永远不会抛出的lambda似乎对我来说有点危险。 –