Я пытался разработать приложение. Сценарий bean будет записан в соответствии с требованием, которое, в свою очередь, вызовет методы (определенные в приложении) в различном порядке в соответствии с требованием. Код приложения (отдельно для скрипта bean) не будет изменен.Общий вызов метода с использованием java-отражения api
Кроме того, приложение использует внешние банки, которые обеспечивают большое количество методов, некоторые из которых реализованы в приложении. Тем не менее, я хотел бы иметь возможность использовать другие методы (те, которые еще не реализованы), без внесения изменений в приложение, если возникнет это требование. Для этого я хотел бы использовать API отражения 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);
}
Я пытаюсь найти способ, я могу получить класс [] methodParameterTypes и Object [] methodParameters, заполненные соответствующими значениями. У меня были бы типы параметров и значения параметров как строка. Также будут оценены любые указатели на полезные утилиты.
Заранее спасибо.
Ну, какие типы параметров и значения? – immibis
Поскольку для общего использования типы параметров могут быть целыми, строковыми и другими возможными (типами) параметрами. Значения параметров будут действительными значениями, типичными для String (input) для соответствующего типа параметра. – user34140
Вы не можете просто ** придать ** 'String' произвольным классам. – fabian