-2

只是希望我能让有人告诉我我这样做是否正确,因为我以前从未写过这样的东西。所以我必须编写一个名为 ProcessQueue 的类,它是 Vector 的子类,以及一个定义空队列的构造函数。Vector 也将保存“Object”类型的项目。所以这里...

public class ProcessQueue<Vector>{

ProcessQueue(){}


}
4

2 回答 2

7

不,这是不对的。这是通用的,不是扩展的。

此外,这不是一个好主意。您ProcessQueue可能在下面有某种集合,但它不需要扩展。更喜欢组合而不是继承。

如果你必须实现某些东西,首先要有一个看起来像Queue. 有某种行为是预期的;确保你的符合它。最好的方法是实现一个强制它的接口。

public class ProcessQueue<T> implements Queue<T> {
   // Have a private collection of some sort that provides the behavior that the interface requires
}
于 2013-03-20T20:48:21.193 回答
6

你没有扩展到Vector任何地方。将您的代码更改为:

public class ProcessQueue<T> extends Vector<T> {

}

顺便说一句,我不建议你使用Vector。检查为什么 Java Vector 类被认为已过时或不推荐使用?. 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̶e̶s̶t̶i̶o̶n̶,我认为与 duffymo 类似,您不应该扩展任何 Java Collection 类,除非它是必须做的。请注意,有很多类可以容纳几乎任何类型的常见集合,并且您拥有Queue并且PriorityQueue可以在您的实际工作中为您提供帮助。

最好的解决方案是 duffymo 所指出的,组合而不是扩展 Java 集合:

public class ProcessQueue<T> {

    private List<T> data = new ArrayList<T>();

    //rest of code...
}

或者创建一个新的接口实现,比如Queueor List

public class ProcessQueue<T> implements Queue<T> {

    //Queue interface methods implementation...
}
于 2013-03-20T20:48:00.217 回答