У меня есть классы 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>? Как я могу это решить?