Я играю с Generic и массивами, кажется, что следующий код компилируется нормально,
ArrayList<Key> a = new ArrayList<Key>();
Но компилятор жалуется на это,
ArrayList<Key>[] a = new ArrayList<Key>[10];
Читая пост в stackoverflow, я вроде понимаю, что это связано с Type Erasure, и я могу исправить это с помощью
ArrayList<Key>[] a = (ArrayList<Key> []) new ArrayList[10];
или список списка
ArrayList<ArrayList<Key>> b = new ArrayList<ArrayList<Key>>();
Но я не могу понять причину этой сцены. Особенно, почему второй является незаконным, учитывая, что первый совершенно нормально. И почему компилятор не жалуется на список списка.