Я хотел бы продлить ArrayList <> ClassJava - Как расширить ArrayList <class>? Я не могу получить определенный поглотитель
Как вы можете видеть в примере ниже, я только добавил один атрибут (TypeFactory).
public class ElementList<E> extends ArrayList<E>
{
// Attribute
private TypeFactory typeFactory;
// Getter/Setter
public TypeFactory getTypeFactory() {
return typeFactory;
}
public void setTypeFactory(TypeFactory typeFactory) {
this.typeFactory = typeFactory;
}
// Constructor
public ElementList(TypeFactory typeFactory)
{
super();
this.typeFactory = typeFactory;
}
}
Моя проблема заключается в том, что мой IDE (в моем случае IntelliJ) не найти метод получения getTypeFactory() и появляется красный текст (как ошибка) после создания нового Elementlist объекта.
List<Element> stockOfTire = new ElementList<Element>(TypeFactory.Tire);
stockOfTire.getTypeFactory();
Есть ли проблемы с моей декларацией?
Почему? почему ты хочешь сделать это? [Предпочитает композицию над наследованием] (https://en.wikipedia.org/wiki/Composition_over_inheritance). _Compose_ данные, _inherit_ поведение. –
Тип переменной 'stockOfTire' - это список. В этом типе нет getTypeFactory(). Если вам нужен доступ к этому методу, переменная должна быть объявлена с типом ElementList . Обратите внимание, что расширение ArrayList в 99,99% случаев - плохая идея. Подумайте о создании класса с полями TypeFactory и List, а также для делегирования в упакованный список. –
Я не понимаю, почему я могу сделать «Список var = new ArrayList ();' и почему он не работает при замене ** ArrayList ** дочерним классом. –
ManWithNoName