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

Al *_*kov 4 java javafx-2

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

签名看起来像这样:

public static void launch(Class<? extends Application> appClass, String... args)
Run Code Online (Sandbox Code Playgroud)

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

 public static void launch(Application app, String... args)
Run Code Online (Sandbox Code Playgroud)

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

Ser*_*nev 5

因为实例化Application是一个复杂的任务,外汇开发商必须控制.

Application实例:

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

因此,您只提供要启动的类名,JavaFX会执行所需的所有工作,包括为您创建对象.