使用java反射api调用通用方法

使用java反射api调用通用方法,java,reflection,Java,Reflection,我一直在尝试开发一个应用程序。bean脚本将根据需求编写,然后根据需求以不同的顺序调用方法(在应用程序中定义)。应用程序代码(bean脚本除外)不会更改 此外,应用程序使用外部JAR,这些JAR提供了大量方法,其中一些方法是在应用程序中实现的。但是,如果出现需求,我希望能够使用其他方法(尚未实现的方法),而无需对应用程序进行更改。为此,我想使用Java反射API。用户应该能够通过传递方法名和相应的参数(使用外部jar文档)来调用外部jar中存在的任何方法 我是java新手,所以我有一些代码试图实

我一直在尝试开发一个应用程序。bean脚本将根据需求编写,然后根据需求以不同的顺序调用方法(在应用程序中定义)。应用程序代码(bean脚本除外)不会更改

此外,应用程序使用外部JAR,这些JAR提供了大量方法,其中一些方法是在应用程序中实现的。但是,如果出现需求,我希望能够使用其他方法(尚未实现的方法),而无需对应用程序进行更改。为此,我想使用Java反射API。用户应该能够通过传递方法名和相应的参数(使用外部jar文档)来调用外部jar中存在的任何方法

我是java新手,所以我有一些代码试图实现它(可能语法不正确):

我正在试图找到一种方法来获取类[]methodParameterTypes和对象[]methodParameters,并用相关值填充它们。我将参数类型和参数值作为字符串。此外,如有任何关于有用UTIL的建议,我们将不胜感激


提前感谢。

您没有将SampleClassName的实例传递给方法。此处调用invoke()

Object returnValue = methodObject.invoke(methodObject, methodParameters);
如果要调用的方法是静态的,则可以执行以下操作

Object returnValue = methodObject.invoke(null, methodParameters);
否则(非静态),您需要创建SampleClassName的实例以在其上执行该方法

如果类不需要任何构造函数参数,可以使用

Object returnValue = methodObject.invoke(classObject.newInstance(), methodParameters);

(显然,您需要通过执行“newInstance”和“invoke”…)来处理大量异常)

那么,参数类型和值是什么?因为它是用于一般用途的,所以参数类型可以是整数、字符串和其他可能的(类型)参数。参数值将是从字符串(输入)类型转换为相应参数类型的实际值。您不能简单地将
String
s转换为任意类。谢谢Fabian。我不知道。不太确定这是否真的是一个关于泛型的问题,这更像是一个反射API问题…谢谢Bret。很抱歉造成混淆-问题不是关于泛型的。我的意思是泛型,试图传达我可能必须调用的方法可以变化,并且可以采用各种参数,如String、Int等。
Object returnValue = methodObject.invoke(classObject.newInstance(), methodParameters);