Guavaに切り替える前に、作業中のすべてのプロジェクトに対して以下の関数を書いていることに気付きました。おそらく、どこかのライブラリにすでに実装されています。
<T> public static T coalesce(T... elements){
for(T element : elements) {
if (element != null) return element;
}
throw new NoSuchElementException();
}
// Usage:
function1(coalesce(function2(param1,param2), "default value"));
コードの重複がなく、一時変数を導入するか、同じ呼び出しを 2 回実行するかを選択する必要がないため (以前に提案された条件演算子のように)、これは素晴らしいことです。あまり流暢に読めないので、良くありません。
Guava を使用している場合 (使用する必要があります)、 を使用Optional
して回避null
できます。これには、API をより明確にし、s が発生しにくくなるという利点もありますNullPointerException
。
void function1(String arg) {}
Optional<String> function2(){ /* insert code*/ }
// Usage:
function1(function2().or("default value"));