亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

SwingUtilities 方法參數包含整個方法體?

SwingUtilities 方法參數包含整個方法體?

DIEA 2021-06-10 14:09:04
我一直在閱讀 SwingUtilities.invokeLater() 方法,我在很大程度上理解它的目的。在處理 GUI 組件時,這些組件上的所有操作都需要在同一個 Event 線程上完成,以避免競爭等。然而,我認為很多問題都沒有展開,代碼實際上是如何工作的?看著它:SwingUtilities.invokeLater(new Runnable(){    public void run()    {        //method body code    });我的問題是,這是如何工作的?我們正在過的invokeLater()方法的新的Runnable OBJ(我認為是的Runnable接口,無論如何,我們如何實例化一個構造函數new Runnable()?),然后附加整個方法體與它的方法調用中:{//Method body code});。這怎么可能?我從未見過將整個方法體作為其參數之一的方法。當我嘗試用我自己的方法復制它時,我收到錯誤,表明我無法在方法參數中提供整個方法主體。因此,我回到我最初的問題,這實際上是如何工作的。也許我多慮了/忽略了,但非常感謝任何幫助。
查看完整描述

3 回答

?
慕村225694

TA貢獻1880條經驗 獲得超4個贊

匿名類。您可以傳遞任何實現 的類Runnable,甚至是匿名類。


查看完整回答
反對 回復 2021-06-23
?
精慕HU

TA貢獻1845條經驗 獲得超8個贊

除了其他答案之外,我還想補充一點。

用于理解您的 Java 代碼示例


SwingUtilities.invokeLater(new Runnable() {

     public void run() {

         //method body code

     }

);

了解 Java 編譯器如何實際處理它會很有幫助。編譯器做了以下兩件事:


它創建一個匿名類(以花哨的類名結尾$1或類似)實現Runnable接口:


class YourEnclosingClass$1 implements Runnable {

     public void run() {

         //method body code

     }

}

然后它將這個匿名類與new操作符一起使用:


SwingUtilities.invokeLater(new YourEnclosingClass$1());


查看完整回答
反對 回復 2021-06-23
?
PIPIONE

TA貢獻1829條經驗 獲得超9個贊

我有,這是如何工作的?


您正在使用匿名類實現接口的run()方法Runnable。


你也可以這樣做:


Runnable run = new Runnable()

{

    public void run()

    {

        //method body code

    }

};


SwingUtilities.invokeLater( run );


查看完整回答
反對 回復 2021-06-23
  • 3 回答
  • 0 關注
  • 292 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號