泛型列表数组
我正在玩泛型和数组,似乎下面的代码编译得很好,
ArrayList<Key> a = new ArrayList<Key>();
但是编译器抱怨这个,
ArrayList<Key>[] a = new ArrayList<Key>[10];
通过阅读stackoverflow中的帖子,我有点明白这是由于类型擦除,我可以使用,
ArrayList<Key>[] a = (ArrayList<Key> []) new ArrayList[10];
或列表列表
ArrayList<ArrayList<Key>> b = new ArrayList<ArrayList<Key>>();
但我无法弄清楚幕后的原因。特别是,为什么第二个是非法的,因为第一个是完全可以的。以及为什么编译器不抱怨列表的列表。