Нужно задействовать массив листов при инициализации таким образом
List
Eclipse выдал ошибку:
Cannot create a generic array of ArrayList
в итоге прокатил такой вариант
List
Почему?
Ответ
Это связано с тем, что компилятор не может вам гарантировать типобезопасность (type safety) для массивов обобщенных типов, потому что массив может быть приведен к более широкому типу (с потерей информации от обобщенном типе).
Например, если бы первый вариант работал, это приводило бы к таким ситуациям:
List
List
String s = a[0].get(0); // ошибка приведения типа во время выполнения программы
Система generics же в Java направлена на проверку типов и гарантии безопасности типов как раз на этапе компиляции. Поэтому вы будете вынуждены написать:
List
и получите Warning от компилятора и предупреждение в IDE, после которого ответственность за потенциальные ошибки перекладывается на вас.
PS. Вообще массив коллекций — довольно сомнительная практика, обычно массивы применяются для примитивных типов там, где есть какие-то вычисления или сериализация/десериализация в бинарные данные.
Используйте List> и живите в типобезопасном мире.
Комментариев нет:
Отправить комментарий