javafx - Kotlin 。基本 JavaFX 应用程序

试用 Kotlin lang,我的印象是它与 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 中的异常:无法构造应用程序实例:类测试

最佳答案

您提供的代码示例不等效:object declaration在 Kotlin 中是一个单例,所以它只有一个在类初始化时调用私有(private)构造函数构造的实例。 JavaFX 试图反射性地调用类的构造函数,但失败了,因为构造函数应该是私有(private)的。

您可能看到的是一个简单的类声明,它的companion object 中有main。 .如果没有显式声明构造函数,Kotlin 和 Java 一样,会生成一个默认构造函数,允许 JavaFX 实例化应用程序:

class Test : Application() {
    override fun start(stage: Stage) {
        ...
    }

    companion object {
        @JvmStatic
        fun main(args: Array<String>) {
            launch(Test::class.java)
        }
    }
}

关于javafx - Kotlin 。基本 JavaFX 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34833258/

相关文章:

android - 如何在 kotlin 协程上进行指数退避重试

android - 如何通过 kotlin 中的 Intent 传递自定义对象

android - 在 ConstraintLayout 中使用 group 来监听多个 View

spring - kotlin 和 @Valid Spring 注解

android - "Extension with name ' android ' does no

android - Kotlin 属性访问语法如何适用于 Java 类(即 EditText set

android - 在 Kotlin 中将接口(interface)作为参数传递

kotlin - 从 java 中调用作为 java 中关键字的 kotlin 函数?

kotlin - 比较字符串 Kotlin

enums - 如何在 Kotlin 中声明枚举类型的变量?