// final Fields initialization import java.io.*; class a { /** * javadoc should not be highlighted */ final int javaDoced; static final int sfi1; static final int sfi2; final int fi1; final int fi2; class inner { final int fii; } final int fi3; final int fi4; static final int csfi1 = 0; static final int csfi2 = csfi1 + 13 / 5; static final int csfi3; static { if (csfi1 < 13) { csfi3 = csfi2 + (csfi1 == 4 ? 5 : csfi2/13); } else { csfi3 = 0; sfi2 = 2; } } final int cifi1 = 1; final int cifi2 = ff(); final int cifi3; int ff() { int i = cifi1 + cifi2 + cifi3 + fi3 + fi4; return i; } { switch (cifi1) { case 2: cifi3 = 2; break; case 1: cifi3 = 20; break; case 0: cifi3 = 21; break; default: cifi3 = 22; break; } } final int cifi4; a() { cifi4 = 4; int i = fi3; fi3 = 3; a ainst = null; fi4 = ainst.fi4; } a(int i) { this.cifi4 = i; fi2 = 3; fi3 = 3; a ainst = null; fi4 = ainst.fi4; } a(String s) { this(0); int i = fi3; } } class Test { // access from within inner class OK final boolean FB; { class s { boolean b = FB; } FB = true; } private final String text; public Test() { new Runnable() { public void run() { doSomething(text);//// } }; text = "Hello world"; } private void doSomething(String value) { } } // multiple initializers class c1 { private final String x; { x = "Hello"; } private final String y; { y = x; } void f() { String s = x+y; } } class c2 { static { } private static final int limit; static { limit = 5; } final String s; int k = s.length(); final String c; int k2 = c.length(); { s = ""; } public c2() { c = ""; } int k3 = c.length(); c2(int i) { this(); } } class UninitializedFinal2 { private final String s; UninitializedFinal2(){ try { } finally { } } } class UninitedFinalFied { private final String string; public UninitedFinalFied() throws IOException { init(); } private void init() throws IOException {} } class AssertFinalFied { private final String string; public AssertFinalFied(boolean b) throws Exception { assert b; string = null; } } class a20Exotic { int n=k=0; final int k; final int k2; int n2 = k==0 ? (k2=9) : (k2=0); } class cX { final int i; cX() { this(1); int k = i; } cX(int d) { i = d; } } // http://www.intellij.net/tracker/idea/viewSCR?publicId=20097 class Lemma { public Lemma() { name.hashCode(); } private final String name; { name = "Andy"; } } class correct { void f() { final Object o; o = new Object(); new Object() { { o.toString(); } }; } } class X { final int i; X() { try { i = 0; } finally { } } } class Y { private final int mayBeFinal; Y() { (mayBeFinal) = 1; } } class IDEA100237 { static class Foo { final int bar; Foo() { bar = 1; } final Object baz = new Object() { final int qux = bar.hashCode() + 1; }; } static class Outer { final String a; class Inner { String b = a; } Outer() { a = ""; } } } class StaticInitializerUsedInAnotherStaticField { private static final int ENUMERATION_CACHE_SIZE; static { ENUMERATION_CACHE_SIZE = 0; } private static final int ourEnumerationCacheConstant = ENUMERATION_CACHE_SIZE; } class InitializedInClassInitializerUsedInTheFollowingFieldInitializer { private final int i; { i = 0; } private int j = i; private final int k; private int l = k; { k = 1; } } class AssignInAssert { private final boolean b; AssignInAssert() { assert b = true; } } class DefiniteAssignmentInFinally { private final String S; { try { try { } finally { try { } catch (Exception e) { } } } finally { S = null; } } } class StaticInitializerUsedInAnotherInstanceField { private final int myEnumerationCacheConstant = ENUMERATION_CACHE_SIZE; private static final int ourEnumerationCacheConstant = ENUMERATION_CACHE_SIZE; private static final int ENUMERATION_CACHE_SIZE; static { ENUMERATION_CACHE_SIZE = 0; } } class StaticInitializedUsedInAnotherStaticField { private static final String STRINGS1; private static final String STRINGS2 = STRINGS1; static { STRINGS1 = ""; } } class InsideAnAnonymousClass { static class Foo1 { private final String _s; public Foo1(String s) { _s = s; } private final Bar _ss = new Bar(_s) { }; } static class Foo2 { private final String _s; public Foo2(String s) { _s = s; } private final Bar _ss = new Bar("") { { String inInitializer = _s; } }; } static class Foo3 { private final String _s; public Foo3(String s) { _s = s; } private final Bar _ss = new Bar("") { String inField = _s; void inMethod() { String inMethodFoo = _s; } }; } static class Foo4 { private final String _s; public Foo4(String s) { _s = s; } private final Bar _ss = new Bar("") { void inMethod() { String inMethodFoo = _s; } }; } static class Bar { private final String _s; public Bar(String s) { _s = s; } } }