首页 > 解决方案 > Java/JavaFX 如何处理未知类型?

问题描述

所以我对 Java 和 JavaFX 还很陌生,我遇到了一个问题,我不确定解决它的最佳方法。

public void goToDestination(String destination, String username, Privilege privilege) throws IOException {
 FXMLLoader loader = new FXMLLoader(getClass().getResource("../../resources/fxml/" + destination + ".fxml"));
 Parent root = loader.load();

 SomeController controller = loader.getController();
 controller.setUsername(username);
 controller.setPrivilege(privilege);

 stage.setTitle("Yuconz System");
 stage.setScene(new Scene(root));
 stage.setMaximized(true);
 stage.show();
}

我的问题是当我设置控制器变量时我不知道它将是什么控制器。我尝试使用泛型,但我无法访问对象的方法。如果有人可以帮助我了解解决此问题的最佳方法,我将不胜感激。

标签: javajavafx

解决方案


为包含 set 方法的控制器创建父类或接口,而不是将它们放在所有控制器中。然后你可以使用类型 ParentController。

public void goToDestination(String destination, String username, Privilege privilege) throws IOException {
 FXMLLoader loader = new FXMLLoader(getClass().getResource("../../resources/fxml/" + destination + ".fxml"));
 Parent root = loader.load();

 ParentController controller = loader.getController();
 controller.setUsername(username);
 controller.setPrivilege(privilege);

 stage.setTitle("Yuconz System");
 stage.setScene(new Scene(root));
 stage.setMaximized(true);
 stage.show();
}

推荐阅读