Kotlin。 基本的JavaFX应用程序
尝试Kotlin朗,我有一个印象,它与Java兼容,因此与JavaFX,我试着下面:
public object TestKt: Application() { public override fun start(stage: Stage){ val pane= Pane() val scene=Scene(pane,200.0,200.0) stage.scene = scene stage.show() } @JvmStatic public fun main(args: Array<String>){ launch() } }
这与Java的基本相同
public class Test extends Application { @Override public void start(Stage stage) { Pane pane=new Pane(); Scene scene=new Scene(pane, 200,200); stage.setScene(scene); stage.show(); } public static void main(String[] args){ launch(); } }
但是Kotlin给出了一个错误:线程“main”中的异常java.lang.RuntimeException:无法构造应用程序实例:class Test
您提供的代码示例并不等同:Kotlin中的object
声明是单例,因此只有在初始化类时通过调用私有构造函数构造了一个实例。 JavaFX试图调用该类的构造函数反射,但失败,因为构造函数是私人的,应该是。
你可能会看到的是一个简单的类声明, main
在它的伴侣对象中 。 如果没有声明明确的构造函数,Kotlin就像Java一样会生成一个默认的构造函数,允许JavaFX实例化应用程序:
class Test : Application() { override fun start(stage: Stage) { ... } companion object { @JvmStatic fun main(args: Array<String>) { launch(Test::class.java) } } }
class MyApplication : Application() { override fun start(primaryStage: Stage) { } } fun main(args: Array<String>) { Application.launch(MyApplication::class.java, *args) }