为什么不能自动使用invokeLater方法(使用import javax.swing.SwingUtilities)?

Bur*_*ras 2 java swing invokelater swingutilities

以下代码执行正常:

public static void main(String [] args) {
        Runnable r = new Runnable() {
            public void run() {
                createGUI();
            }
        } ;

        javax.swing.SwingUtilities.invokeLater(r);
    }
Run Code Online (Sandbox Code Playgroud)

我很好奇为什么以下代码无法编译:

 import javax.swing.SwingUtilities;

    public static void main(String [] args) {
                Runnable r = new Runnable() {
                    public void run() {
                        createGUI();
                    }
                } ;

                invokeLater(r);
        }
Run Code Online (Sandbox Code Playgroud)

之间有什么differenc javax.swing.SwingUtilities.invokeLater(r);import javax.swing.SwingUtilities; invokeLater(r);

rge*_*man 5

要在类中引用静态成员,作为简单名称,您需要静态导入:

import static javax.swing.SwingUtilities.*;
Run Code Online (Sandbox Code Playgroud)

以后你可以使用

invokeLater(r);
Run Code Online (Sandbox Code Playgroud)

正常导入import javax.swing.SwingUtilities;允许您通过简单名称引用该类 SwingUtilities,但不能通过该类的任何成员引用该类.所以你可以这样做:

import javax.swing.SwingUtilities;
Run Code Online (Sandbox Code Playgroud)

SwingUtilities.invokeLater(r);
Run Code Online (Sandbox Code Playgroud)