我一直在試圖開發一個應用程序。一個bean腳本將按照需求編寫,然後按照需求以不同的順序調用方法(在應用程序中定義)。應用程序代碼(除了bean腳本)不會被更改。使用java反射api調用通用方法
此外,應用程序使用外部罐子提供大量的方法 - 其中一些在應用程序中實現。但是,如果需求出現,我希望有可能使用其他方法(尚未實現的方法)而不更改應用程序。爲此,我想使用Java反射API。用戶應該能夠通過傳遞方法名稱和相應的參數(使用外部jar文檔)來調用外部容器中的任何方法。
我是一個Java新手,所以我有試圖實現它的一些代碼(可能不是語法正確):
public void callExternalJarMethod(String methodName, Class[] methodParameterTypes, Object[] methodParameters)
throws NoSuchMethodException {
String className = "SampleClassName";
Class classObject = Class.forName(className);
Method methodObject;
if (methodParameterTypes.length == 0) {
methodObject = classObject.getMethod(methodName, null);
} else {
methodObject = classObject.getMethod(methodName, methodParameterTypes);
}
// Not handling calling of static methods in which case "null" would be passed instead of methodObject to the invoke method
Object returnValue = methodObject.invoke(methodObject, methodParameters);
}
我試圖找到一種方法,我可以得到的Class [] methodParameterTypes和Object [] methodParameters填充相關的值。我將參數類型和參數值作爲字符串。此外,任何指向有用的應用程序的指針將不勝感激。
在此先感謝。
那麼,什麼是參數類型和值? – immibis
由於它是一般用法,因此參數類型可以是Integer,String和其他可能的(類型)參數。參數值將是從String(輸入)到相應參數類型的類型的實際值。 – user34140
你不能簡單** ** ** String到任意類。 – fabian