希望我能找到一个人告诉我,我这样做是对的,因为我之前从未写过这样的东西。所以我必须编写一个名为ProcessQueue的类,它是Vector的子类,以及一个定义空队列的构造函数。 Vector也将保存“对象”类型的项目。所以这就是......
public class ProcessQueue<Vector>{
ProcessQueue(){}
}
答案 0 :(得分:7)
不,那不对。这是通用的,而非扩展。
此外,这不是一个好主意。您的ProcessQueue
下面可能有某种类型的集合,但不需要扩展。首选组合继承。
如果您必须实施某些内容,请首先使用实际上看起来像Queue
的API。有某种行为是预期的;确保你的符合它。最好的方法是实现一个强制执行它的接口。
public class ProcessQueue<T> implements Queue<T> {
// Have a private collection of some sort that provides the behavior that the interface requires
}
答案 1 :(得分:6)
您没有将Vector
扩展到任何地方。将您的代码更改为:
public class ProcessQueue<T> extends Vector<T> {
}
顺便说一句,我建议你不要使用Vector
。检查Why is Java Vector class considered obsolete or deprecated?。 IMO如果你必须这样做,最好扩展ArrayList
。
public class ProcessQueue<T> extends ArrayList<T> {
}
在您的代码中使用List
:
List<SomeClass> lstQueue = new ProcessQueue<SomeClass>();
U̶n̶r̶e̶l̶a̶t̶e̶d̶̶t̶o̶̶t̶h̶e̶̶o̶r̶i̶g̶i̶n̶a̶l̶̶q̶u̶s̶t̶i̶o̶n̶,我认为与duffymo类似,你不应该扩展任何Java Collection类,直到它是必须做的。请注意,有很多类可以容纳几乎任何类型的常见集合,并且Queue
和PriorityQueue
可以帮助您完成实际工作。
最好的解决方案是duffymo指向的,而不是扩展Java Collection:
public class ProcessQueue<T> {
private List<T> data = new ArrayList<T>();
//rest of code...
}
或创建界面的新实现,例如Queue
或List
。
public class ProcessQueue<T> implements Queue<T> {
//Queue interface methods implementation...
}