2016-10-18 249 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),雖然這可能比你需要的更多。

相關問題