Я пытаюсь добавить элемент в список, где параметр типа списка является подстановочным знаком, расширяющим вопрос.
ArrayList<? extends Question> id = new ArrayList<? extends Question>();
id.add(new Identification("What is my name?","some",Difficulty.EASY));
map.put("Personal", id);
Где идентификация является подклассом Question. QUestion — это абстрактный класс.
это дает мне эту ошибку
На линии №1 Cannot instantiate the type ArrayList<? extends Question>
И на линии № 2
The method add(capture#2-of ? extends Question) in the type ArrayList<capture#2-of ? extends Question> is not applicable for the arguments (Identification)
Почему он показывает такую ошибку? Что вызывает это? И как бы мне это исправить?
ArrayList<? extends Question>
означает элементArrayList
некоторого неизвестного типа числаQuestion
. Этой информации недостаточно для создания объекта (какие видыQuestions
?), и она не позволяет безопасно добавлятьIdentification
. Возможно, вы хотелиArrayList<Identification>
илиArrayList<Question>
? - person obataku   schedule 23.08.2012ArrayList<Question>
:-) Это позволит добавить любыеQuestion
в список. - person obataku   schedule 23.08.2012MultipleChoice
илиIdentification
являютсяQuestion
. - person obataku   schedule 23.08.2012