a552298242 2016-12-12 14:16 采纳率: 28.6%
浏览 870
已采纳

想问下java高手这段代码为什么这样写

我提前预习时查api写出来的,有关jcombox这个组件

final JComboBox comboBox = new JComboBox();
 comboBox.addActionListener(new ActionListener(){

            @Override
            public void actionPerformed(ActionEvent arg0) {
                // TODO Auto-generated method stub
                System.out.println(comboBox.getSelectedItem());
            }

        });

平时遇见类似于comboBox.addActionListener()这种形式的代码,括号里面
往往基本类型,或者某个对象,但是像今天这个代码,为什么括号里面放了
new ActionListener(),看起来像是新建一个对象,更重要的是还涉及到了重写
请问下这种形式的代码有什么更加特别的名字吗,还有就是括号里面的那算是什么,
基本数据类型肯定不是,倒是像对象,但和常见的对象还不一样,请高手帮解释下

  • 写回答

7条回答 默认 最新

  • zcoderz 2016-12-12 14:34
    关注

    这是采用了匿名内部类的方式写的,可以减少代码的耦合度。如果不按照上述的写法。comboBox.addActionListener(XX);这个里面的XX是一个ActionListener实例,而ActionListener是一个接口不可能new出实例来。
    此时需要创建一个类去实现ActionListener接口,然后可以通过new实现类对象,此时这个对象可以传到comboBox.addActionListener(XX)中。
    上面的写法实际上就是简写了这个过程。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(6条)

报告相同问题?