java - 在JavaFX中使用 `start`方法时main是不必要的吗?

标签 java javafx program-entry-point

使用 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 作为起点”。编译器只是编译代码并看到 startmain - 与任何其他方法相同。它是搜索 main 并调用它的运行时。也就是说,链接的答案讨论了 start(以及一般的 JavaFX 应用程序)如何获得特殊待遇。


1。打包工具已在 Java 11 中删除。但是,可能会出现替代品: jpackager .

关于java - 在JavaFX中使用 `start`方法时main是不必要的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53016021/

相关文章:

java - java中写入excel时出现错误

java - 使用 JavaFX 中的按钮自动缩放按钮的文本

c# - 我可以从主构造函数关闭程序吗?

java - Spring MVC 4~5版本 View 问题

java - readResolve 不起作用? : an instance of Guava's SerializedForm appears

JavaFX 事件/监听器/处理程序

JavaFX 最低要求

java - 无法引用已声明的对象字段

java - 如何在要拉伸(stretch)的网格布局中创建 13 个中的最后一个按钮

javascript - 选择的 RIA 技术