I did read a number of topics discussing inner classes, and i was under the impression that an inner class has access to the variables and methods of the enclosing class. In
inner is an instance of OuterClass.InnerClass which doesn't defines a so it wont be able to access it anyways.
To understand it in the simplest manner... look at the block in which a is created and the block in which OuterClass.InnerClass is defined.
public class OuterClass { // a is defined in this block
String a = "A";
class InnerClass{ // InnerClass starts here and an instance will access what is defined now
int x;
}
}