使用方法引用

时间:2016-08-10 13:55:35

标签: java swing java-8

我最近开始阅读有关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会产生编译器错误,因为“无法从静态上下文引用非静态变量”。我发现SwingTests::createGUI有效,但在自己的身体中提到一个名字似乎很奇怪。有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

显然,这是正确的方法,任何可能允许的快捷方式都会导致编译器模糊不清。另见Holger的链接:

  

另见“Why class/object name must be explicitly specified for method references?”