试用 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)作为参数传递