我正在使用Generic和数组,看起来下面的代码编译得很好,
ArrayList<Key> a = new ArrayList<Key>();
Run Code Online (Sandbox Code Playgroud)
但是编译器抱怨这个,
ArrayList<Key>[] a = new ArrayList<Key>[10];
Run Code Online (Sandbox Code Playgroud)
通过阅读stackoverflow中的帖子,我有点明白,这是由于类型擦除,我可以通过使用,修复它,
ArrayList<Key>[] a = (ArrayList<Key> []) new ArrayList[10];
Run Code Online (Sandbox Code Playgroud)
或列表清单
ArrayList<ArrayList<Key>> b = new ArrayList<ArrayList<Key>>();
Run Code Online (Sandbox Code Playgroud)
但我无法弄清楚幕后的原因.特别是,为什么第二个是非法的,因为第一个是非常好的.为什么编译器不会抱怨列表列表.