[英]Singleton + Abstract class issue
我正在尝试定义此继承:
public abstract class GameAction extends Observable {
protected static GameAction instance = null;
protected GameAction() {
// Exists only to defeat instantiation.
}
//All GameActions are singletons
public static abstract GameAction getInstance();
}
public class ChooseAnswerAction extends GameAction {
protected ChooseAnswerAction() {
// Exists only to defeat instantiation.
}
//All GameActions are singletons
@Override
public static GameAction getInstance() {
if(instance == null) {
instance = new ChooseAnswerAction();
}
return instance;
}
}
问题是第二类中的getInstance()
方法在他的父亲上找不到相同的方法,因此它要求我删除@Override
。
同样在父类上,我得到以下错误:
GameAction类型的抽象方法getInstance只能设置可见性修饰符,可以是public或protected
我可以解决此错误的唯一方法是取出static修饰符,但我需要它...
谢谢你的时间!
这是我去单身人士的链接。 由于AlekseyShipilёv发表了非常详细的帖子-我在这里链接您。
http://shipilev.net/blog/2014/safe-public-construction/
对于您的情况,由于您要返回子单例实例,因此我建议将该实例对象放在子类中。 另外,您可能需要更好的设计,并考虑使用Singleton工厂。
简短的答案是,您不能覆盖静态方法,因为它们已绑定到超类。
长答案是,这会使实现单例继承变得复杂(假设您想将实例保存在超类中)。 查看Java中的单例和继承
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.