编写类是Vector的子类,java

She*_*kie -2 java constructor vector

只是希望我能找人告诉我我这样做是对的,因为我之前从未写过这样的东西.所以我必须编写一个名为ProcessQueue的类,它是Vector的子类,以及一个定义空队列的构造函数.Vector也将保存"对象"类型的项目.所以这里......

public class ProcessQueue<Vector>{

ProcessQueue(){}


}
Run Code Online (Sandbox Code Playgroud)

duf*_*ymo 7

不,那不对.这是通用的,而不是扩展.

此外,这不是一个好主意.你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)


Lui*_*oza 6

你没有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)