我有以下功能傳遞類名作爲參數
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();
}
什麼,我想才達到是有更多的一般功能,我可以通過類名(在這種情況下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()
功能。有沒有辦法做到這一點?
調用這個好,你可以寫它具有一個接口方法'getConnectionData()',你以後可以檢查類名後面的類是否是該接口,然後你可以安全地調用它 –
好吧,我看到了,但我怎麼能傳遞類名作爲參數,然後得到這個類內的函數做fe鑄件? –
得到類對象:如果你有一個類(比如String),你可以使用'Class String.class';如果你有一個對象(比如說obj),你可以使用'Class obj.getClass()'.....來得到你可以在你的類對象上使用函數Class.getName()的名字,然後它就是一個字符串,再次將它轉換爲一個類,你可以使用'Class.forName(String)' –