我的理解 匿名内部类 一般用在  实现接口,和重写父类方法时候用。目的就是减少代码量。
例如:
public class Test1{
public static void main(String[] args) {
   //匿名内部类实现接口
           AA show = new AA(){public void show(){System.out.println("hello");}};
           show.show();
           
}
}
interface AA{
void show();
}
而我刚才突然想了个问题,能不能在不是接口,或父类上使用那
就随便写了这样的代码public class Test1{
public static void main(String[] args) {           BB bb = new BB(){public void show(){
            System.out.println("Hello World");
           }};
        
}
}class BB {

}结果语法上是没有错.可是怎么调用这个方法那?
bb.show();会报错地

解决方案 »

  1.   

    你这个方法相当于在BB的子类里新加了一个方法,但是外界对这个方法是未知的,怎么可能调用呢?这和匿名类的初衷也不一样了。
      

  2.   

    可以利用反射来获取方法并执行,不过匿名内部类一定要在父类或者接口中定义方法。
      

  3.   

    通过变量名是没法调用的,新增加的方法只能在内部的方法中调用,没法在外部调用
      

  4.   

    好的 我去反射下看看能不能找到。我知道要用在父类和接口
    我只是好奇,所以乱写了下
      

  5.   


    如果都定义了接口方法,又何必用反射?!