繁体   English   中英

Java:用于创建实现接口的类的实例的简写形式

[英]Java: Short form to create an instance of a class that implements an interface

我想使用new运算符创建JPanel的实例,该实例实现ActionListener并直接覆盖actionPerformed方法。

我试过了

JPanel panel = new JPanel implements ActionListener() {
    @Override
    public void actionPerformed(ActionEvent ae) {
        // ...
    }
};

但这由于语法错误而无效。

当然,我可以只定义一个新类,例如JPanelWithActionListener并用new调用它,但是有什么方法可以只用一行完成呢?

在Java中这是不可能的-Java中没有匿名类型。

您的new JPanel implements ActionListener() { /*...*/ };代码new JPanel implements ActionListener() { /*...*/ }; 等效于此代码。

class JPanelWithActionListener extends JPanel implements ActionListener {
    @Override
    public void actionPerformed(ActionEvent e) {
        // TODO Auto-generated method stub
    }
}
JPanel panle = new JPanelWithActionListener();

您想创建一个新的JPanelWithActionListener类型而不定义一个类(因此,该类是匿名的)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM