我正在尝试定义此继承:
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只能设置公开或受保护的可见性修饰符
我可以解决此错误的唯一方法是取出static修饰符,但我需要它...
谢谢你的时间!
最佳答案
这是我去单身人士的链接。由于AlekseyShipilёv发表了非常详细的帖子-我在这里链接您。
http://shipilev.net/blog/2014/safe-public-construction/
对于您的情况,由于您要返回子单例实例,所以我建议将该实例对象放在子类中。另外,您可能需要更好的设计,并考虑使用Singleton工厂。