0
我想扩展ArrayList <>Java - 如何扩展ArrayList <class>?我不能得到我定义的getter
正如你在下面的例子中看到的,我只添加了一个属性(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()getter方法,并创建一个新的元素列表对象后,显示为红色文本(如错误)。
List<Element> stockOfTire = new ElementList<Element>(TypeFactory.Tire);
stockOfTire.getTypeFactory();
我的声明有问题吗?
为什么?你为什么想这样做? [优先使用继承的组合](https://en.wikipedia.org/wiki/Composition_over_inheritance)。 _Compose_ data,_inherit_行为。 –
'stockOfTire'变量的类型是List。此类型中不存在getTypeFactory()。如果您需要访问此方法,则必须使用ElementList 类型声明该变量。请注意,扩展ArrayList,在99.99%的情况下,是一个坏主意。请考虑使用TypeFactory和List字段创建一个类,并将其委托给包装列表。 –
我不明白为什么我可以做'列表 var = new ArrayList ();'为什么当用一个子类代替** ArrayList **时不工作。 –
ManWithNoName