Here is my sample abstract singleton class:
public abstract class A {
protected static A instance;
public static A getInstance() {
return instance;
}
//...rest of my abstract methods...
}
And here is the concrete implementation:
public class B extends A {
private B() { }
static {
instance = new B();
}
//...implementations of my abstract methods...
}
Unfortunately I can't get the static code in class B to execute, so the instance variable never gets set. I have tried this:
Class c = B.class;
A.getInstance() - returns null;
and this
ClassLoader.getSystemClassLoader().loadClass("B");
A.getInstance() - return null;
Running both these in the eclipse debugger the static code never gets executed. The only way I could find to get the static code executed is to change the accessibility on B's constructor to public, and to call it.
I'm using sun-java6-jre on Ubuntu 32bit to run these tests.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…