Java 动态方法调用

Java 动态方法调用,java,java-8,java-7,Java,Java 8,Java 7,据我所知,如果同时提供了方法名和参数类型列表,则可以动态调用方法(见下文)。但是,有没有一种方法可以在不指定参数类型或提供非/有界泛型类类型的情况下动态调用方法?如果是,请提供解释/示例。谢谢 Class<?>[] paramTypes = {String.class}; Method m = original.getClass().getMethod(methodName, paramTypes); m.invoke(original, value); Class[]paramT

据我所知,如果同时提供了方法名和参数类型列表,则可以动态调用方法(见下文)。但是,有没有一种方法可以在不指定参数类型或提供非/有界泛型类类型的情况下动态调用方法?如果是,请提供解释/示例。谢谢

Class<?>[] paramTypes = {String.class};
Method m = original.getClass().getMethod(methodName, paramTypes);
m.invoke(original, value);
Class[]paramTypes={String.Class};
方法m=original.getClass().getMethod(方法名,参数类型);
m、 调用(原始、价值);

如果您希望根据目标、名称和可用参数类型动态查找目标方法,则该方法可能会被证明是有用的。

自Java 1.4以来,就有一种解决方案和beans包。对于调用,而不是计算返回值,可以使用

new Statement(original, methodName, new Object[]{value}).execute();
由于它必须计算出比直接反射使用更多的数据,因此您可以预期性能甚至比直接使用反射还要差


此外,它仅限于
public
api。

您可以使用
getDeclaredMethods
获取所有声明的方法,但是如果您不知道要提供的参数(是吗?),您将如何调用该方法?@Sotirios Delimanolis:OP知道这些值,因此可以确定参数类型,但这是一个附加操作。此外,参数类型不一定是参数类型,例如,您的参数可能是
字符串
,但目标方法可以接受任何
对象