Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring boot Spring Boot-JavaFX应用程序不可能实现SmartLifeCycle?_Spring Boot_Javafx_Subclass_Extends_Implements - Fatal编程技术网

Spring boot Spring Boot-JavaFX应用程序不可能实现SmartLifeCycle?

Spring boot Spring Boot-JavaFX应用程序不可能实现SmartLifeCycle?,spring-boot,javafx,subclass,extends,implements,Spring Boot,Javafx,Subclass,Extends,Implements,我正在构建一个JavaFX应用程序,我希望它实现Spring的SmartLifeCycle接口,以便在主类终止时执行任务。JavaFX主类必须扩展包含stop()方法的应用程序类。SmartLifeCycle界面还包含一个停止方法。看起来这两个方法拒绝共存,即使它们具有不同的方法签名。从应用程序类扩展的JavaFX方法没有参数,并且抛出异常,而SmartLifeCycle中实现的方法将可运行对象作为参数 这两个方法是否可能存在于同一个类中?这两者都需要通过子类实现,因此无论我做什么,编译器都会抱

我正在构建一个JavaFX应用程序,我希望它实现Spring的SmartLifeCycle接口,以便在主类终止时执行任务。JavaFX主类必须扩展包含stop()方法的应用程序类。SmartLifeCycle界面还包含一个停止方法。看起来这两个方法拒绝共存,即使它们具有不同的方法签名。从应用程序类扩展的JavaFX方法没有参数,并且抛出异常,而SmartLifeCycle中实现的方法将可运行对象作为参数

这两个方法是否可能存在于同一个类中?这两者都需要通过子类实现,因此无论我做什么,编译器都会抱怨


谢谢

应用程序抽象类具有以下方法:

public void stop() throws Exception {}
SmartLifecycle
界面具有以下方法,继承自
Lifecycle

void stop();
如您所见,一个可以抛出
异常
,另一个则不能。如果要扩展
应用程序
并实现
智能生命周期
,则在重写的
stop()
方法中不能有
抛出异常

public class MySpringJavaFxApp extends Application implements SmartLifecycle {

    @Override
    public void start(Stage primaryStage) throws Exception {
        // ...
    }

    @Override
    public void stop() {
        // ...
    }

    // other methods that need to be implemented...
}

但是请注意,您必须重写
stop()
,以删除
throws
子句。否则方法冲突(
Application#stop
不是抽象的,因此在这种情况下尝试实现
Lifecycle#stop

两个stop()方法来自不同的源,一个来自JavaFX应用程序类,另一个来自Spring SmartLifeCycle接口。这不是方法重载,而是编译器对我要做的事情感到困惑。我现在正在准备一个代码示例。您是对的,我删除了throws Exception子句,编译器现在很高兴。请发布一个答案,以便我可以接受:)。非常感谢。