我是javaFx的新手并且看了一下源代码并且有一个问题 Application.launch函数,用于启动应用程序。
签名看起来像这样:
public static void launch(Class<? extends Application> appClass, String... args)
我的问题是为什么它看起来不像这样:
public static void launch(Application app, String... args)
作为论证,作者试图通过什么来实现?
答案 0 :(得分:5)
因为Application
的实例化是FX开发人员必须控制的复杂任务。
Application
实例化:
因此,您只提供要启动的类名,JavaFX会完成所需的所有工作,包括为您创建一个对象。
答案 1 :(得分:1)
我认为其中一个原因就是这种方式更像你可以直接通过“java my.pkg.MyApp”启动它,你现在可以在Java8 / FX8中启动,因为它位于类路径上。
要获得明确答案,您可能需要在openjfx-mailing列表中询问。
答案 2 :(得分:0)
class参数表示调用launch
的方法的直接封闭类答案 3 :(得分:0)
可能,他们正在使用Reflection。有点像,将类的名称作为launch()
的参数,然后调用该类的start()
。
与Stack上的其他问题一样,人们会问作者想要实现的目标,但我们并不了解他们做出的决定。