| 关于内部匿名类,我发现一个很奇怪的现象,它不能直接放在成员位置上,必须放在方法内,否则编译会失败!!!内部匿名类不是相当于匿名子类对象吗,怎么不能放在成员位置上,例如下面的例子 abstract class Person
 {
 abstract void show();
 }
 class out
 {
 int x=4;
 void function()
 {
 System.out.println("x="+x);
 }
 new Person()
 {
 void show()
 {
 System.out.println("我是匿名子类对象");
 }
 void back()
 {
 
 }
 }.show();
 
 }
 
 class Demo
 {
 public static void main(String[] args)
 {
 out o=new out();
 o.function();
 }
 }
 
 红色部分是匿名内部类,为什么编译通不过?而把它放在放在方法内时就会编译通过啊??例如下面的例子:
 abstract class Person
 {
 abstract void show();
 }
 class out
 {
 int x=4;
 void function()
 {
 System.out.println("x="+x);
 }
 public void function1()
 {
 new Person()
 {
 void show()
 {
 System.out.println("我是匿名子类对象");
 }
 void back()
 {
 
 }
 }.show();
 
 }
 }
 
 class Demo
 {
 public static void main(String[] args)
 {
 out o=new out();
 o.function();
 o.function1() ;
 }
 }
 
 
 |