public void loadWindowAndSendDataTest(String path, String appName, ConnectionData connectionData) {
try {
Stage subWindow = new Stage();
subWindow.initModality(Modality.APPLICATION_MODAL);
FXMLLoader loader = new FXMLLoader();
Parent parent = loader.load(getClass().getResource(path).openStream());
ExitController exitController = (ExitController) loader.getController();
exitController.getConnectionData(connectionData);
Scene scene = new Scene(parent);
subWindow.setScene(scene);
subWindow.setTitle(appName);
subWindow.show();
} catch(IOException e) {
e.printStackTrace();
}
そして、何私がachiveしたいので、それは希望、私は(この場合はExitControllerで)クラス名を渡すことができ、より一般的な機能を持つことですこのような何かのように:
public void loadWindowAndSendDataTest(String path, String appName, ConnectionData connectionData, String className) {
try {
Stage subWindow = new Stage();
subWindow.initModality(Modality.APPLICATION_MODAL);
FXMLLoader loader = new FXMLLoader();
Parent parent = loader.load(getClass().getResource(path).openStream());
/* do sth with className to obtain UsedClassController class */
UsedClassController usedClassController = (UsedClassController) loader.getController();
usedClassControler.getConnectionData(connectionData);
Scene scene = new Scene(parent);
subWindow.setScene(scene);
subWindow.setTitle(appName);
subWindow.show();
} catch(IOException e) {
e.printStackTrace();
}
仮定私は、この関数に渡しているクラスがgetConnectionData()
のfuctionを実装しているということです。これを行う方法はありますか?
でこれを呼び出します。メソッド 'getConnectionData()'を呼び出すことができます。クラス名の背後にあるクラスがそのインターフェイスであるかどうかを確認してから、安全に呼び出すことができます。 –
どうしたらクラス名をパラメータとして渡すことができますか? feを行う機能鋳造? –
クラスオブジェクトを取得するには:Class(String)を取得した場合は、クラス String.class'を使用できます。オブジェクト(たとえばobj)がある場合は、クラス obj.getClass() '.....を使用して、クラスオブジェクトで関数Class.getName()を使用できる名前を取得します。クラスを再びクラスに変換するには、Class.forName(String)を使用することができます。 –