[英]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.