Создание массива универсальных коллекцийJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Создание массива универсальных коллекций

Сообщение Anonymous »

Вообще-то вопрос должен быть

Код: Выделить всё

Creating an array of generic anything.
Почему компилятор не может об этом позаботиться?

Следующее будет помечено как ошибка: невозможно создать общий массив.

Код: Выделить всё

List[] dtoLists = {new ArrayList(), anExistingDtoList};
Чтобы преодолеть это, мне нужно

Код: Выделить всё

List[] dtoLists = (List[])Array.newInstance(ArrayList.class, 2);
dtoLists[0] = new ArrayList();
dtoLists[1] = anExistingDtoList;
Итак, почему компилятор не может преобразовать первый случай во второй?

Я понимаю что дженерики определяются во время компиляции, а не во время выполнения, в то время как массивы определяются во время выполнения и, следовательно, для создания массива требуется определенный тип.

Что с какими технологическими/логическими барьерами могут столкнуться разработчики компиляторов, которые помешают им реализовать это?

Является ли проблема чисто философской, касающейся ортогональности языка? Если да, то как такое поведение может нарушить ортогональность языка?

Это вопрос сложности? Объясните сложность.

Я надеюсь, что ответы на мой вопрос помогут мне лучше понять поведение компилятора Java, когда дело касается дженериков.

Примечание:
перестаньте быть счастливым. Ответы «Массив общего списка»
не отвечают на мой вопрос. Почему компиляторы не могут самопроизвольно выполнить преобразование?

Подробнее здесь: https://stackoverflow.com/questions/848 ... ollections
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»