A class i.e. created inside a method is called local inner class in java. If you want to invoke the methods of local inner class, you must instantiate this class inside the method.
public class localInner1{ private int data=30;//instance variable void display(){ class Local{ void msg(){System.out.println(data);} } Local l=new Local(); l.msg(); } public static void main(String args[]){ localInner1 obj=new localInner1(); obj.display(); } }
In such case, compiler creates a class named Simple$1Local that have the reference of the outer class.
import java.io.PrintStream; class localInner1$Local { final localInner1 this$0; localInner1$Local() { super(); this$0 = Simple.this; } void msg() { System.out.println(localInner1.access$000(localInner1.this)); } }
class localInner2{ private int data=30;//instance variable void display(){ int value=50;//local variable must be final till jdk 1.7 only class Local{ void msg(){System.out.println(value);} } Local l=new Local(); l.msg(); } public static void main(String args[]){ localInner2 obj=new localInner2(); obj.display(); } }