クラス全体でKとかVとか指定するのは前にやったけど、メソッド1つだけで有効なKとかVとかを指定する方法を知った。
スタティックメソッドとかの時に便利そう。
Class.forName()でClassを取ってくる方法だと、キャストしなきゃいけなそう。
Class.cast()というメソッドがあるのを発見した。
何が出来るのか知らないから、調べる余地あり。
import java.util.*; public class GenericsTest { public static void main(String[] args) { GenericsTest g = new GenericsTest(); String ins_str = g.newInstance(String.class); Integer ins_int = g.newInstance(Integer.class); ArrayList<String> array_str = g.newArrayList(String.class); HashMap<String, Integer> hash_str_int = g.newHashMap(String.class, Integer.class); try { Class<?> cls = Class.forName("java.lang.String"); String ins_str2 = (String)g.newInstance(cls); } catch (ClassNotFoundException e) { } } public <T> T newInstance(Class<T> cls) { T instance = null; try { instance = cls.newInstance(); } catch (InstantiationException e) { } catch (IllegalAccessException e) { } return instance; } public <T> ArrayList<T> newArrayList(Class<T> cls) { return new ArrayList<T>(); } public <K, V> HashMap<K, V> newHashMap(Class<K> cls1, Class<V> cls2) { return new HashMap<K, V>(); } }