为什么JavaFX Application.launch()将类作为参数?

时间:2013-10-27 03:00:56

标签: java javafx-2

我是javaFx的新手并且看了一下源代码并且有一个问题 Application.launch函数,用于启动应用程序。

签名看起来像这样:

public static void launch(Class<? extends Application> appClass, String... args)

我的问题是为什么它看起来不像这样:

 public static void launch(Application app, String... args)

作为论证,作者试图通过什么来实现?

4 个答案:

答案 0 :(得分:5)

因为Application的实例化是FX开发人员必须控制的复杂任务。

Application实例化:

  • 要求“FX工具包”提前初始化
  • 与桌面,jnlp和插件模式不同
  • 需要特定时间
  • 应该在特殊的“启动器”线程上调用
  • 应触发应用程序生命周期事件
  • 应该读取应用程序参数(来自CLI或jnlp文件)

因此,您只提供要启动的类名,JavaFX会完成所需的所有工作,包括为您创建一个对象。

答案 1 :(得分:1)

我认为其中一个原因就是这种方式更像你可以直接通过“java my.pkg.MyApp”启动它,你现在可以在Java8 / FX8中启动,因为它位于类路径上。

要获得明确答案,您可能需要在openjfx-mailing列表中询问。

答案 2 :(得分:0)

class参数表示调用launch

的方法的直接封闭类

答案 3 :(得分:0)

可能,他们正在使用Reflection。有点像,将类的名称作为launch()的参数,然后调用该类的start()

与Stack上的其他问题一样,人们会问作者想要实现的目标,但我们并不了解他们做出的决定。