我一直在尝试扩展 ArrayList 类,但没有成功。我想扩展它,并能够对其进行参数化。
所以通常你有类似的东西
ArrayList<SomeObject> list = new ArrayList<SomeObject>();
我要
MyList<SomeObject> list = new MyList<SomeObject>();
简单地扩展 ArrayList 是行不通的。
public class MyList extends ArrayList ...
当我尝试使用它时出现错误
The type MyList is not generic; it cannot be parameterized with arguments <SomeObject>
我已经尝试过
public class MyList extends ArrayList<Object>
public class MyList<SubObject> extends ArrayList<Object>
没有成功,如果我在类名后面使用子对象,它似乎可以工作,但由于某种原因隐藏了子对象类中的方法。
如有任何想法或建议,我们将不胜感激。
最佳答案
您需要为ArrayList
的类型参数指定一个类型。对于泛型类型参数,T
是相当常见的。由于编译器不知道 T
是什么,因此您需要向 MyList
添加一个类型参数,该参数可以传入类型。因此,您得到:
public class MyList<T> extends ArrayList<T>
此外,您可能需要考虑实现 List
并委托(delegate)给 ArrayList
,而不是从 ArrayList
继承。 “优先考虑对象组合而不是类继承。[设计模式 第 20 页]”
关于java - 如何参数化扩展集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/675430/