//???这是什么意思:生成对象?那后面的{}作何解释;函数定义?那前面的new作何解释;
{
public void actionPerformed(ActionEvent e) //
{
jMenuFileExit_actionPerformed(e); //
}
}
);
在上面的这段代码中,addActionListener函数的参数是一个对象么?难道java可以在函数参数的位置定义一个类吗?

解决方案 »

  1.   

    new是生成一个对象的实例,而由于actionPerformed方法是在接口ActionListener里的,在实例中的接口必须写方法体,所以不是定义一个类。
      

  2.   

    java的内部类,挺有意思的,你最好看看书。是可以在方法中定义一个类,这叫匿名内部类。thinking in java中有详细讲解
      

  3.   

    比如说有这么一句:
    return new MyObject(){
        private int i;
        public int MyMethod(){;}
    };这等于以下的两句:
    1、class MySubObject extends MyObject(){
        private int i;
        public int MyMethod(){;}
    }
    2、return new MySubObject();我是借花献佛,具体的你去看看书吧!
    例子是<<Thinking in Java>>上第165页的。
      

  4.   

    我觉得 bumaple(蓝枫) 说的也有一定的道理,但是接口不在继承接口的类中实现,而在生成实例的时刻去实现是不是也有些问题,相对于java宣称的比c++简单的话来说,这反而有些复杂了;
    根据上面的分析,还是在生成实例的同时在定义类比较可信;
    希望大家再讨论一下;
      

  5.   

    上次写的不正确,以上代码是关于匿名内部类的,具体请看java核心技术卷1第227页