There is one caveat to the declaration -before-reading rule.: "it does not apply if the initializer expression defines an anonymous class ,as the usage then occur in a different class with its own accessibility rules in the enclosing context....
You must look at this excellent article
as well. Look into §188.8.131.52 Restrictions on the use of Fields during Initialization of JLS as well as pointed by this article.
An excellent article written by Corey.