可能是自己的java基础没学好吧,最近在研究swing 的时候,我发现这样的用法,请求帮助
JButton bt = new JButton("bt");
bt.addActionListener(new ActionListener(){
  void actionPerformed(ActionEvent e) {
    //要执行的操作
  }
}); 
我查了下,这个匿名类是继承接口ActionListener的,老实说,我还真不清楚这样的用法,
在我印象中,用匿名类的时候,其中new的时候, 名字是可以随便取的。 不一定非得要ActionListener这个名字
我悄悄的问下,如果不用这个名字,是不是就不继承ActionListener接口了

解决方案 »

  1.   

    1.首先你的说法就很有问题哟,接口是不能继承的,你想想有哪个类的父类是接口呢,接口只能用来实现。
    2.还有你接口是不能直接new 出来的,但是有了匿名了你就可以new接口,但实际上你new 的是一个实现了那个接口的实现类  bt.addActionListener(new ActionListener(){ 
      void actionPerformed(ActionEvent e) { 
        //要执行的操作 
      } 
    所以: new ActionListener接口 是new 了一个实现ActionListener接口的实现类 ,只是你不知道类它的名字
      

  2.   

    如果你想改类的名字的话,就用内部类吧:
    (){
    JButton bt = new JButton("bt"); 
    bt.addActionListener(new A());
    }
    private class A implements ActionListener()
    {
    //.....
    }
      

  3.   

    但是new ActionListener
    ActionListener 确实是个接口名字呀
    我想问下,如果我用new ActionXXX其他名字行不行哦?
      

  4.   


    可以new ActionXXX  但要看你的 ActionXXX是什么咯  如果是接口的话就应该用匿名类!
      

  5.   

    就我对匿名类的理解,它完全可以写成继承接口的一个类来代替的就拿这个来说
    JButton bt = new JButton("bt"); 
    bt.addActionListener(new ActionListener(){ 
      void actionPerformed(ActionEvent e) { 
        //要执行的操作 
      } 
    }); 我把new ActionListener 改称new Action
    这样可行?
      

  6.   

    你可以写成现实接口的一个类来代替哟,可那还是叫匿名么(它不是有个名字叫Action么)?
      我觉得还有点要注意:那是匿名“内部类”