foreach Nullチェック

前に仕事でコーディング中に失敗したこと。

nullのコレクション変数に対してforeach文をあてがうと、Nullちんぽこ例外が起こる。
事前にNullチェックをしたいが、
if ( collection != null ) foreach... なんてださい。

public class Main {
	static <T> Iterable<T> nullGuard(Iterable<T> iter) {
		return iter == null ? Collections.<T>emptyList() : iter;
	}
	
	public static void main(String[] args) {
     	Double[] da = new Double[]{0.1, 0.2, 0.3};
		List<Double> ld = new ArrayList<Double>();
		ld.add(1.0);
		ld.add(2.0);

		for ( double d : nullGuard(ld)){
			System.out.println(d);
		}
		for ( double d : nullGuard(Arrays.asList(da))){
			System.out.println(d);
		}
	}
}
1.0
2.0
0.1
0.2
0.3

スマートにできるような、しかし微妙にきもい。さらにプリミティブな配列には対応できない。
template specialization使えば、と思ったけどJavaにはないみたい。
Java難しい。。。