由於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似乎對我來說有點危險。 –