コレクション参照がnullであるかどうかわからない場合は、反復する前にnullをチェックする必要があることはよくあることです。サンプル:
Collection<Object> collection = ...
...
if(collection != null)//troublesome
for(Object o : collection)
もちろん、空のコレクションはnullよりもはるかに優れていることは知っていますが、場合によっては、クライアントコードが他のモジュールからのnull許容コレクションを制御できないことがあります(たとえば、サードパーティコードからの戻り値)。だから私はユーティリティメソッドを書きました:
public static <T> Iterable<T> nullableIterable(Iterable<T> it){
return it != null ? it : Collections.<T>emptySet();
}
クライアントコードでは、nullをチェックする必要はもうありません。
for(Object o : nullableIterable(collection))
...
あなたnullableIterable()
は合理的だと思いますか?何かアドバイス?何か心配はありますか?ありがとう!