static blocks are inside the sub classes themselves, with that, we cannot assume that static initializations are done by the time you first access it. Java will load the classes only when they are needed (unfortunately). Actually, good point, this means that it may not even work - let me write a test to check that.