Код: Выделить всё
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
Мобильная версия