Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使方法在应用程序的生命周期中只运行一次_Java - Fatal编程技术网

Java 如何使方法在应用程序的生命周期中只运行一次

Java 如何使方法在应用程序的生命周期中只运行一次,java,Java,我有一个用默认值填充文件的方法,我在构造函数中调用该方法。我希望该方法只运行一次,我的意思是只运行一次,所以当用户在eclipse中按下play按钮时,该方法将不会在第二次按下时运行 我尝试过类似的方法,但不起作用: private boolean defaultExecuted; public synchronized void defaultStatsFile() { if (defaultExecuted) { return; } else

我有一个用默认值填充文件的方法,我在构造函数中调用该方法。我希望该方法只运行一次,我的意思是只运行一次,所以当用户在eclipse中按下play按钮时,该方法将不会在第二次按下时运行

我尝试过类似的方法,但不起作用:

private boolean defaultExecuted;
public synchronized void defaultStatsFile()
{
    if (defaultExecuted)
    {
        return;
    }
    else
    {
        fileReadNWrite.configWriter("panel1", "non-US incidents");
        fileReadNWrite.configWriter("panel2", "Hoaxes");
        fileReadNWrite.configWriter("panel3", "Under NUFORC investigation");
        fileReadNWrite.configWriter("panel4", "Likliest Shape");
        defaultExecuted = true;
    }

}
有没有更聪明的方法只填写一次文件

请如果有什么不清楚的评论,我会回答。
非常感谢您的帮助。

最好在静态块中填充数据

比如:在主类中包含适当的异常处理,这样就不需要依赖构造函数在文件中加载默认数据

static {
            fileReadNWrite.configWriter("panel1", "non-US incidents");
            fileReadNWrite.configWriter("panel2", "Hoaxes");
            fileReadNWrite.configWriter("panel3", "Under NUFORC investigation");
            fileReadNWrite.configWriter("panel4", "Likliest Shape");
            defaultExecuted = true;
}

因为所有代码都在类中,并且可以有多个独立的类加载器,所以在java中无法做到这一点,您需要java之外的一些资源

这是可以的,但是如果您希望该类的所有实例化都使用它,那么将布尔值设置为静态。其他方法是使用singlton或使用spring@ScaryWombat嗨,谢谢你的评论。我试着让它静止,但没用。我将努力研究辛顿。我希望静态解决方案能奏效。你知道为什么它不起作用吗/你是说eclipse运行按钮?按两次会运行两次应用程序,因此该方法当然会被调用两次。@pvg抱歉,我不是那个意思。我的意思是一旦程序运行,他们就会关闭程序。然后再次运行该程序,该方法将不会再次调用。因此,我希望该方法只运行一次,而不再运行。谢谢,你最好解释一下你要解决的一般问题“永不再来”真的很模糊。再也不用那台电脑了?在宇宙热死之前再也不会有了?为什么?您到底想完成什么?这会导致在加载类时执行代码。当从GUI代码调用时,我不确定这是否是最优雅的解决方案。不过,这种机制是创建java单例的好方法@NikCorthaut:他提到他需要加载一次,对于AWT/SWING base应用程序,主方法必须在那里。他还可以在一些Util类静态方法中实现这一点,并在加载GUI之前在main方法中调用它,这取决于哪种方法更好。