使用 JavaFX 时,我们重写启动应用程序的方法 start。
@Override
public void start(Stage primaryStage ) {}
我发现当没有 main 方法时,java 编译器会理解 start 是起点。 main 方法似乎是不必要的。 还有理由继续实现 main 吗?
是否还有仍然实现 main 方法的功能原因?
最佳答案
注意:我的回答假设 OpenJDK/OracleJDK。我不知道其他供应商是否也有同样的行为。
其他人引用的文档主要关注不再存在的 JavaFX Packager 工具1。值得注意的是,该工具似乎并不是必需的(至少对于 Java 10 和 11 而言)。唯一需要的是 JavaFX 库存在并且指定的主类扩展 Application
;那么无论代码如何组装,您都不需要 main
方法。
Are there also functional reasons to still implement a main method?
在普通的 JavaFX 应用程序中,我会说不。几乎您想要在 main
中执行的任何初始化都可以在 Application.init
内部完成。您还可以通过 Application.getParameters
访问命令行参数。
P.S. the most important question why does the compiler accept start as a starting point.. It's against my programming neurotism
参见my answer here有关 JavaFX(至少 10 和 11)应用程序的内部启动过程的详细信息。
此外,编译器不“接受 start 作为起点”。编译器只是编译代码并看到 start
和 main
- 与任何其他方法相同。它是搜索 main
并调用它的运行时。也就是说,链接的答案讨论了 start
(以及一般的 JavaFX 应用程序)如何获得特殊待遇。
1。打包工具已在 Java 11 中删除。但是,可能会出现替代品: jpackager .
关于java - 在JavaFX中使用 `start`方法时main是不必要的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53016021/