Spring boot Spring Boot-JavaFX应用程序不可能实现SmartLifeCycle?
我正在构建一个JavaFX应用程序,我希望它实现Spring的SmartLifeCycle接口,以便在主类终止时执行任务。JavaFX主类必须扩展包含stop()方法的应用程序类。SmartLifeCycle界面还包含一个停止方法。看起来这两个方法拒绝共存,即使它们具有不同的方法签名。从应用程序类扩展的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中实现的方法将可运行对象作为参数 这两个方法是否可能存在于同一个类中?这两者都需要通过子类实现,因此无论我做什么,编译器都会抱
谢谢应用程序抽象类具有以下方法:
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子句,编译器现在很高兴。请发布一个答案,以便我可以接受:)。非常感谢。