【发布时间】:2012-01-12 16:45:40
【问题描述】:
我有几个队列都扩展了Queue 类。我想做一个队列管理器基类来处理添加到队列(和其他操作)。
如果您看一下下面的代码,我创建了一个名为QueueManger 的基类,它有一个名为add() 的静态方法,它将获取“队列”并为其添加一个变量。我想让getQueue()(在 add() 中调用)抽象,因为我想强制其他类提供他们自己的“队列”实现。问题是我不能声明抽象静态方法。解决这个问题的正确方法是什么?
public class RegistrationQueueManger {
@Override
Queue getQueue() {
return new RegistrationQueue(); // RegistrationQueue is a class that
// extends Queue.java
}
}
public abstract class QueueManger {
abstract static Queue getQueue(); // Error: cant do! (in java)
public static Add(String myvar) {
getQueue().add(myvar);
}
}
注意:我看到了一些关于这个主题的问题,但它并没有真正给出如何解决它并创建另一个设计来处理它的好答案。
【问题讨论】:
-
阅读下面的答案,并使用单例模式代替您的代码
-
如果他想扩展QueueManager,它不应该是静态的或单例的。
-
对,让 RegistrationQueueManger 成为单例怎么样?是吗。
标签: java abstract-class