У меня есть 4 класса (B, C, D, E), которые расширяют один класс (A), я пытаюсь создать общий List<? extends A>
, чтобы добавить объекты одного из классов (B, C, D, E). Я могу сделать это без проблем. Проблема в том, что я не могу получить доступ к методам классов (B, C, D, E). Есть ли другой способ сделать это?Список <? extends A> доступ к методам расширенных классов
Часть коды
public class A{
protected int id;
public void setId(int id){}
public int getId(){}
}
public class B extends A{
private name;
public void setName(String name){}
public void getName(){}
}
public class Generic{
List<? extends A> myList;
public List<? extends A> getMyList(){}
public void setList(ArrayList<? extends A> MyList){}
}
И это то, что я делаю.
Generic myObject = new myList<B>;
myObject.getMyList().get(counter).getId();
Код выше работает отлично, что я хочу сделать, но я не могу его видеть ниже.
myObject.getMyList().get(counter).getName();
Где вы пытаетесь получить доступ к методам? –
Можете ли вы использовать полиморфизм? Я имею в виду использование абстрактного метода в 'A' и' @ Override' в подклассах? Если вы сохраняете объекты в коллекции, то вы должны относиться к ним равномерно. Конечно, есть особые случаи, когда вам действительно нужно то, чего вы пытаетесь достичь, но особый случай особый. Думайте лучше о своем дизайне :) –
Я не верю, что вы можете добавлять объекты в список типов 'List extends A>' без проблем. Пожалуйста, покажите нам свой код. ;) –