的一個問題用番石榴的Optional
類型的方法的參數是,你不能簡單地寫傳遞Optional.absent()值的方法簡潔
// method declaration
public void foo(Optional<String> arg);
// compiler error
foo(Optional.absent());
由於類型推斷失敗,而是必須添加類型明確:
// real method call
foo(Optional.<String> absent());
我該如何避免它?
有沒有更好的方法,但FYI,'可選的'往往比方法參數類型更常用作返回值。 (忘記來自方法的返回值可能比您正在編寫的方法的參數爲空更容易) – 2012-08-01 12:31:53
對於複雜的表達式,我使用了適當類型的局部變量(在分配的RHS上不需要類型變量)以獲得更可讀的內容。但是,在解決方案來臨之前(可能是JDK8),這裏什麼都不能做。 – maaartinus 2012-08-01 15:28:01
@LouisWasserman使用'Optional'作爲參數仍然有好處:1)向API的用戶明確說明可以缺少參數; 2)可以很容易地將另一種方法的返回值傳遞給你的方法。 – 2012-08-01 21:03:42