如何在Java中实现抽象单例类?
下面是我的示例抽象单例类:
public abstract class A {
protected static A instance;
public static A getInstance() {
return instance;
}
//...rest of my abstract methods...
}
以下是具体的实现:
public class B extends A {
private B() { }
static {
instance = new B();
}
//...implementations of my abstract methods...
}
不幸的是,我无法执行类 B 中的静态代码,因此永远不会设置实例变量。我试过这个:
Class c = B.class;
A.getInstance() - returns null;
和这个
ClassLoader.getSystemClassLoader().loadClass("B");
A.getInstance() - return null;
在 eclipse 调试器中同时运行这两个参数时,静态代码永远不会被执行。我能找到执行静态代码的唯一方法是将 B 构造函数的可访问性更改为 public,并调用它。
我在Ubuntu 32bit上使用sun-java6-jre来运行这些测试。