Java / JavaFX如何处理未知类型?

时间:2019-03-08 11:26:08

标签: 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();
}

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

1 个答案:

答案 0 :(得分:0)

为包含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();
}