She*_*kie -2 java constructor vector
只是希望我能找人告诉我我这样做是对的,因为我之前从未写过这样的东西.所以我必须编写一个名为ProcessQueue的类,它是Vector的子类,以及一个定义空队列的构造函数.Vector也将保存"对象"类型的项目.所以这里......
public class ProcessQueue<Vector>{
ProcessQueue(){}
}
Run Code Online (Sandbox Code Playgroud)
不,那不对.这是通用的,而不是扩展.
此外,这不是一个好主意.你ProcessQueue可能在下面有一些类型的集合,但它不需要扩展.首选组合继承.
如果你必须实现某些东西,首先要有一个实际看起来像的API Queue.有一种预期的行为; 确保你的符合它.最好的方法是实现一个强制执行它的接口.
public class ProcessQueue<T> implements Queue<T> {
// Have a private collection of some sort that provides the behavior that the interface requires
}
Run Code Online (Sandbox Code Playgroud)
你没有Vector在任何地方扩展.将您的代码更改为:
public class ProcessQueue<T> extends Vector<T> {
}
Run Code Online (Sandbox Code Playgroud)
顺便说一句,我建议你不要使用Vector.检查为什么Java Vector类被认为已过时或已弃用?.国际海事组织,如果你必须这样做,它会更好地扩展ArrayList.
public class ProcessQueue<T> extends ArrayList<T> {
}
Run Code Online (Sandbox Code Playgroud)
在您的代码中使用List:
List<SomeClass> lstQueue = new ProcessQueue<SomeClass>();
Run Code Online (Sandbox Code Playgroud)
无关原来的问题,我觉得作为duffymo类似的,你不应该,直到它是一个必须做的任何扩展的Java集合类的.需要注意的是有大量的类来几乎任何一种常见的收藏品,你必须Queue和PriorityQueue可以帮助你在你的实际工作.
最好的解决方案是duffymo指向的,而不是扩展Java Collection:
public class ProcessQueue<T> {
private List<T> data = new ArrayList<T>();
//rest of code...
}
Run Code Online (Sandbox Code Playgroud)
或者创建一个新的接口实现,比如Queue或List.
public class ProcessQueue<T> implements Queue<T> {
//Queue interface methods implementation...
}
Run Code Online (Sandbox Code Playgroud)