The Problem
I was investigating some odd behavior on the BlackBerry recently to try to diagnose a problem. Along the way, I discovered a bug in BlackBerry’s JVM, as a result of which static initialization can occur multiple times – and even static final variables can change.
Consider the following code:
public class App extends Application
{
public static void main(String[] args)
{
System.out.println(BaseClass.class.getName());
System.out.println(Subclass.class.getName());
}
}
public class BaseClass
{
static
{
System.out.println("Static initialization called");
}
}
public class Subclass extends BaseClass
{
}
Continue reading Static Initialization in the BlackBerry JVM