Java程序出错:"将初始化程序移动到构造函数"

时间:2014-09-06 11:17:39

标签: java swing runnable invokelater awt-eventqueue

它从java.awtpublic void run()开始,它们都用红色加下划线,当我用鼠标点击它们时,我收到一条消息,说明要将初始化程序移动到构造函数。任何人都可以帮我这个吗?

public static void main (String[] args) {
    // TODO code application logic here
    EmployeeRecord main = new EmployeeRecord() {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new EmployeeRecord().setVisible(true);
            }
        )}
    }
}

1 个答案:

答案 0 :(得分:1)

取出包装纸。以下是您所需要的一切。

public static void main (String[] args) {

    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            new EmployeeRecord().setVisible(true);
        }
    });    // <======= Notice the change here too. 
}

您只需要静态调用invokeLater类的方法EventQueue。做你正在做的事情是一个完全不同的(非法)结构,这是不可能的。您基本上是在创建一个匿名类实例,并在其中调用相同的构造函数。即使它是正确的构造,如

public static void main (String[] args) {
    // TODO code application logic here
    EmployeeRecord main = new EmployeeRecord() {
        {
            java.awt.EventQueue.invokeLater(new Runnable() {
                public void run() {
                    new EmployeeRecord().setVisible(true);
                }
            });
        }
    };
} 

您正在创建一个不必要的实例。