调用未知类的方法

问题描述 投票:0回答:1

我的控制器很少,每个控制器都有init()方法。问题是,如何为每个已加载的阶段/控制器调用该方法?下面的代码可以正常工作,但是我不想为每种可能的控制器类编写脚本。

简而言之,我想要这个:

FXMLLoader loader = new FXMLLoader(Main.class.getClassLoader().getResource("somefxmlfile.fxml"));
if (loader.getController() instanceof LoginController) {
    ((LoginController) loader.getController()).init();
}

将被这样的东西代替:

FXMLLoader loader = new FXMLLoader(Main.class.getClassLoader().getResource("somefxmlfile.fxml"));
if (loader.getController() instanceof Class<T extends Controller>) {
     ((Class<T extends Controller>) loader.getController()).init();
}

我在周围弄乱了一段时间,无法编写正确的代码。

java javafx
1个回答
0
投票

我想到两个主意:

  • [如果一个人可以控制类Controller,那么可以给它一个public abstract void init()-方法,并在扩展Controller的所有类中实现它
  • 或者,可以通过对带有一些自定义注释(例如@PostConstruct@InitMethod)的方法进行注释,然后在控制器中扫描带有该注释的方法并在构造后执行该方法,来实现此目的。
© www.soinside.com 2019 - 2024. All rights reserved.