请问java里的匿名类是怎么回事啊 
能讲讲吗

解决方案 »

  1.   

    就是只继承某个类或者实现某个接口,但是不显示规定这个类的名字最常见的就是Listener的用法JButton.addActionListener(new ActionListener(){
      public void actionPerformed(ActionEvent e){
      }
    });
    这样写,实际上new ActionListener是new了一个自己写的类,而不是ActionListener,这个类是ActionListener的子类,但却不显示设置这个类的名称,因为没必要给他命名。
      

  2.   

    匿名类当然就是没有名字的类
    如有一个接口
    public interface IAbc{
        public void A();
    }
    MyServer类中的Service方法的参数就是IAbc类型的如
    public class MyServer{
        public void Service(IAbc abc){
            //.....
            abc.A();
            //.....
        }
    }
    如果在Test类中使用MyServer有两种方法:方法一:写一个IAbc的实现类,再用
    public class MyAbc implements IAbc{
        public void A(){//......}
    }在访问中:
    MyServer server=new MyServer();
    server.Service(new MyAbc());方法二:就是用匿名类,也就是不写接口IAbc的实现,而在调用时直接给出接口实现代码
    MyServer server=new MyServer();
    server.Service(new IAbc(){               //这儿在声明匿名类接口实现代码
        public void A(){//......}            //这儿在声明接口实现代码
    }
    );两种方法的差异是
    方法一有一个命名实现类,这个实现类可以重复使用
    方法二没有命名实现类,实现代码不能重用