ジェネリクスのインスタンス化を少しだけ楽にする

ジェネリクスインスタンス化はめんどくさいし、読みにくい。

Map<Integer, String> map = new HashMap<Integer, String>();

以下のようなユーティリティにより少しだけ楽になる。

public class GenericFactory {
    private GenericFactory(){}

    public static <K, V> HashMap<K, V> newHashMap() {
        return new HashMap<K, V>();
    }
	
    public static <E> ArrayList<E> newArrayList() {
        return new ArrayList<E>();
    }
}

これにより以下のように、少しだけ美しくなれる。

Map<String, Integer> map = GenericFactory.newHashMap();
List<String> list = GenericFactory.newArrayList();


さらに、こんなんを良く使う場合は、

Map<String, List<String>> map = new HashMap<String, List<String>>();

こんなふうに用意すれば、

    public static <K, V> HashMap<K, List<V>> newListHashMap() {
        return new HashMap<K, List<V>>();
    }

読み易くはなる。

Map<String, List<String>> lmap = GenericFactory.newListHashMap();