Java / JavaFX Как бороться с неизвестными типами? - PullRequest
0 голосов
/ 08 марта 2019

Так что я довольно новичок в 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 голосов
/ 08 марта 2019

Создайте родительский класс или интерфейс для контроллеров, которые содержат заданные методы вместо того, чтобы использовать их во всех контроллерах. Тогда вы можете использовать тип 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();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...