[問題] 可以省略implements ActionListener?

看板java作者 (達)時間10年前 (2015/07/23 22:29), 10年前編輯推噓0(004)
留言4則, 2人參與, 最新討論串1/1
下面是書上的範例 是改寫成匿名類別來實作傾聽者 不太懂為什麼這種寫法 為何可以省略「implements ActionListener」 thank import javax.swing.*; import java.awt.event.*; public class AnonymousListener extends JFrame { int act = 0; // 用來記錄按鈕被次數的變數 public static void main(String[] args) { AnonymousListener test = new AnonymousListener(); } // 用建構方法建立元件、將元件加入視窗、顯示視窗 public AnonymousListener() { setTitle("Listener 示範"); JButton mybutton = new JButton("換個標題"); // addActionListener() 的參數為匿名類別物件 mybutton.addActionListener( // 以下建立的匿名類別物件為按鈕物件的傾聽者 new ActionListener() { public void actionPerformed(ActionEvent e) { act++; // 將按鈕次數加 1 setTitle("發生 " + act + " 次按鈕事件"); } } ); getContentPane().add(mybutton); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setSize(420,140); setVisible(true); } } -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 210.65.89.53 ※ 文章網址: https://www.ptt.cc/bbs/java/M.1437661767.A.837.html

07/23 23:02, , 1F
new ActionListener() { } 會被compiler轉成
07/23 23:02, 1F

07/23 23:03, , 2F
class AnonymousListener$1 implements ActionListener
07/23 23:03, 2F

07/23 23:04, , 3F
這就叫匿名類別
07/23 23:04, 3F

07/23 23:24, , 4F
直接用一個匿名類並且馬上實作,所以不用取新class名
07/23 23:24, 4F
THANK 我再仔細研究 ※ 編輯: dharma (210.65.89.53), 07/24/2015 21:04:50
文章代碼(AID): #1LiFf7Wt (java)
文章代碼(AID): #1LiFf7Wt (java)