interface Super{ public void print();} view plainprint?
//例子1:public class Test { int c=18;public Super getInstance(){ int a=5;final int b=6;class Inner implements Super{ public void print() { //局部内部类中访问本方法的局部变量System.out.println(a);//编译错误: 从内部类中访问局部变量 a;需要被声明为final //内部类中访问成员变量System.out.println(b);//正常System.out.println(c);//正常} return new Inner();}
public static void main(String[] args) { Super s=new Test()。getInstance();s.print();}例子2:对上面例子1的例子改变一下,从内部类->匿名内部类匿名内部类既然叫匿名,那么名字对于该类来说已经不重要,因为该匿名类的实例本来就不打算给别的类使用或重复使用,仅限于类内部使用或使用一次,所以就不需要类名了,不过因为没有类名匿名内部类也就没有构造函数了。
public class Test { int c=18;public Super getInstance(){ int a=5;final int b=6;return new Super(){ public void print() { //局部内部类中访问本方法的局部变量System.out.println(a);//编译错误: 从内部类中访问局部变量 a;需要被声明为final System.out.println(b);//正常System.out.println(c);//正常} };} public static void main(String[] args) { Super s=new Test()。getInstance();s.print();}