簡體   English   中英

使用方法參考在其類的內部調用靜態方法

[英]Call static method inside body of its class using method reference

我最近開始閱讀有關Java Swing和lambda表達式的信息。 我讀到您應該始終通過使用java.awt.EventQueue.invokeLater()調用方法來構造框架,如下所示:

public class SwingTests
{
    private static void createGUI()
    {
        //creates frame, packs etc.
    }

    public static void main(String[] args)
    {
        java.awt.EventQueue.invokeLater(new Runnable()
            {
                public void run()
                {
                    createGUI();
                }
            }); //haven't really figured out formatting for this yet
    }
}

然后我的IDE建議使用lambda表達式代替匿名類,因此我切換到

java.awt.EventQueue.invokeLater(() -> createGUI());

但是在閱讀時,我還發現了方法引用,並想使用它們。 但是,用() -> createGUI() this::createGUI () -> createGUI()替換() -> createGUI()會產生編譯器錯誤,因為“無法從靜態上下文引用此非靜態變量”。 我發現SwingTests::createGUI可以工作,但是在名稱上以自己的名稱引用類似乎很奇怪。 有更好的方法嗎?

顯然,這是正確的方法,任何本可以允許的快捷方式都會對編譯器造成歧義。 另請參閱Holger的鏈接:

另請參見“為什么必須為方法引用顯式指定類/對象名稱?”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM