У меня есть классы A
, B
, C
и D
, где B
extends A
, C
extends A
и D
extends A
.
У меня есть следующий ArrayList
каждый с несколькими элементами в них:
ArrayList<B> b;
ArrayList<? extends A> mix = b;
Я хотел, чтобы переменная mix
содержала элементы типа B
, C
или D
. Я попытался добавить элемент типа C
в mix
следующим образом:
mix.add(anElementOfTypeC);
Но IDE не позволяет мне это делать, и он говорит:
anElementOfTypeC не может быть преобразован в CAP # 1 методом обращения где CAP # 1 является новой переменной типа: CAP # 1 расширяет A от захват? расширяет A
Правильно ли я использовал <? extends A>
? Как я могу это решить?