在 Java 中,我做了以下类似的事情而没有考虑太多:
public class Main {
public void run() {
// ...
}
public static void main(String[] args) {
new Main().run();
}
}
但是,最近我不确定这样做是否安全。毕竟,Main
对象创建后没有引用(嗯,有this
引用,但这算不算?),所以看起来垃圾收集器可能会在对象执行过程中删除它某物。所以也许这个main
方法应该是这样的:
public static void main(String[] args) {
Main m = new Main();
m.run();
}
现在,我很确定第一个版本可以工作,而且我从来没有遇到过任何问题,但我想知道在所有情况下是否都安全(不仅在特定的 JVM 中,而且最好根据语言规范对这种情况的描述)。