![](/img/trans.png)
[英]Java: How to create an instance of a generic class that implements an abstract interface?
[英]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.