Re: [問題] EventQueue.invokeLater 使用疑問

看板java作者 (單身漢)時間10年前 (2015/04/29 13:43), 編輯推噓2(205)
留言7則, 3人參與, 最新討論串2/3 (看更多)
了解, 謝謝回覆, 不過很好奇的是 java.awt.EventQueue.invokeLater(new Runnable() { public void run() { System.out.println("test"); new NewJFrame().setVisible(true); } }); 這邊做了new Runnable() {public void run(){} } 是代表將Runnable實體化嗎? 看不太懂這句, 我感覺只是把Runnable介面實體化當作invokeLater的參數, 只是介面本身不是不可以實體化嗎? Runnable為什麼可以new呢? ※ 引述《noapaov (單身漢)》之銘言: : 請教一下各位, 目前在Swing碰到一個疑問, : 看了大多數的書籍, 在使用Swing建議使用方法如下 : public static void main(String args[]) { : java.awt.EventQueue.invokeLater(new Runnable() { : public void run() { : System.out.println("test"); : new NewJFrame().setVisible(true); : } : }); : } : 也就是視窗程式會開一個thread來處理Event Queue和GUI的事情, : 但我是用下列方法一樣會產生該視窗物件, 也沒發生什麼錯誤 : public static void main(String args[]) { : new NewJFrame().setVisible(true); : } : 想請問各位大大, 這兩著到底差別在哪? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 203.69.59.91 ※ 文章網址: https://www.ptt.cc/bbs/java/M.1430286202.A.865.html

04/29 14:12, , 1F
因為new Runnable的同時後面也實作了這個介面的run方
04/29 14:12, 1F

04/29 14:13, , 2F
法 所以當然是可以的
04/29 14:13, 2F

04/29 14:14, , 3F
這等同於 你宣告一個class然後此class實作Runnable
04/29 14:14, 3F

04/29 14:47, , 4F
主要是之前實作介面, 都是類似
04/29 14:47, 4F

04/29 14:48, , 5F
class obj implement interface,書上又說介面不能new
04/29 14:48, 5F

04/29 14:49, , 6F
才讓我很困惑 , 怎麼new Runnable()了
04/29 14:49, 6F

04/29 14:57, , 7F
Anonymous class
04/29 14:57, 7F
文章代碼(AID): #1LG6zwXb (java)
文章代碼(AID): #1LG6zwXb (java)