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