Not
everybody knows about this, but it is widely understood. Neil Gafter and Josh Block riff on this in Puzzle #49 in "Java Puzzlers." Quoting from that book,
... it is possible to observe a final static field before it is initialized, when it still contains the default value for its type... Final fields are constants only if the initializing expression is a constant expression... in summary, be careful of class initialization cycles.
Note that your variable here does not have a constant expression initializer -- it has
no initializer, as appropriate for a blank final.