下面这段关于匿名类的代码编译时总是出错,奇怪的是我觉得并没有提示的错误!
代码段:
listDepart.addActionListener(new ClassSelectionAction() implements ActionListener{ 
    //react action on JLists and buttons
public void actionPerformed(ActionEvent e){
//some codes
}
});报错信息:
         ')' expected
                listDepart.addActionListener(new ClassSelectionAction() implements ActionListener{另一半‘)’在最后一行的分号前呀,并没有遗漏‘)’。
请问哪位能帮忙解疑吗?

解决方案 »

  1.   

    listDepart.addActionListener(new ActionListener{
    //react action on JLists and buttons
    public void actionPerformed(ActionEvent e){
    //some codes
    }
    });
      

  2.   

    改成如下:
    listDepart.addActionListener(new ActionListener() {   public void actionPerformed(ActionEvent e) {   }
    });
    能工作就行了,一般也是这样用的,你的那种形式太罕见了.
      

  3.   

    谢谢各位:)believefym:
    匿名类是定义在方法体中的一种类,可以实现接口或者继承其他的类,但是不能有任何明确的构造器,默认为final类,不能被abstract static修饰符修饰,一般用于即时处理一些临时问题而没有必要复用的一种类。
    你看这样理解可以吗?
    如果答案是yes的话,我的方法似乎没问题啊?哪位能帮忙解释为什么通过匿名类实现借口的形式不对呢?
      

  4.   

    楼主:
    new ClassSelectionAction() implements ActionListener
    你这个ClassSelectionAction是什么?是你的匿名类的类名?匿名类还有类名吗?矛盾!
      

  5.   

    listDepart.addActionListener(new ClassSelectionAction());class ClassSelectionAction() implements ActionListener{
    public void actionPerformed(ActionEvent e){
    //some codes
    }
    }这样就可以了,匿名类是不能IMPLEMENTS或EXTENDS的,因为IMPLEMENTS是实现接口,怎么能用new创建对象呢,EXTENDS是继承抽象类,抽象类也是不能创建对象的
    呵呵,初学者吧,没关系,这些常见错误多学学就会了
      

  6.   


    上述各位所说的两种方法方法我能理解(一种是匿名类实现接口,另外一种通过实名类实现)。但是想再问一句: 如果还是通过匿名类实现的话,new 后面不用接口名而是超类名(匿名类所继承自的超类)也可以吧?
      

  7.   

    listDepart.addActionListener(new ActionListener(){ 
        //react action on JLists and buttons
    public void actionPerformed(ActionEvent e){
    //some codes
    }
    });
    上面是对的,你写的就不叫匿名类了啊,已经给了名字啊。在使用匿名类时,应该直接使用new关键字后面紧跟需要实现的接口名就可以,在里面实现需要实现的方法。
      

  8.   

    是的,我明白原来的方法问什么是错误的了:) 真不好意思,类名都给了还大言不惭地说是匿名类!
    那new 后面跟超类名然后再加所创建的匿名类类体也可以实现匿名类吧?
      

  9.   

    那new 后面跟超类名然后再加所创建的匿名类类体也可以实现匿名类吧?
    -----------
    接口也是一个超类,这样的说法当然是对的,楼主可能有些概念没搞清楚吧