具有动态参数数的java调用方法dnamicall
我在看这个问题 应用第一个答案所说的 这是我动态调用方法的代码,它的参数是字符串数组具有动态参数数的java调用方法dnamicall,java,Java,我在看这个问题 应用第一个答案所说的 这是我动态调用方法的代码,它的参数是字符串数组 java.lang.reflect.Method method; try { String [] requiredParameters = testService.getRequiredParameters(); String [] parameters = new Stri
java.lang.reflect.Method method;
try {
String [] requiredParameters = testService.getRequiredParameters();
String [] parameters = new String[requiredParameters.length];
for (int i = 0; i<requiredParameters.length ; i++){
String valueRequiredParameter = request.getParameter(requiredParameters[i]);
parameters[i] = valueRequiredParameter;
}
method = new TestRecommendations().getClass().getMethod(service, parameters);
} catch (SecurityException e) {
// exception handling omitted for brevity
} catch (NoSuchMethodException e) {
// exception handling omitted for brevity
}
这就是我想动态调用的方法类型
public ResultSet level0ForUser(String ... userURI) {
您传递的参数类型错误。您的
getMethod
调用接受一个String
实例和多个Class
实例。您试图传递一个String
和String
数组
通过:
getMethod(字符串名称、类…参数类型)
返回反映该类对象所表示的类或接口的指定公共成员方法的方法对象。name参数是一个字符串,指定所需方法的简单名称。parameterTypes参数是一个类对象数组,按声明的顺序标识方法的形式参数类型。如果parameterTypes为null,则将其视为空数组
因此,您需要传递包含所需方法的所有参数类型的Class
var arg。对于您的方法,您应该编写如下内容:
Method m = TestRecommendations.class.getMethod("service", String[].class);
Method m = TestRecommendations.class.getMethod("level0ForUser", String[].class);
您传递的参数类型错误。您的
getMethod
调用接受一个String
实例和多个Class
实例。您试图传递一个String
和String
数组
通过:
getMethod(字符串名称、类…参数类型)
返回反映该类对象所表示的类或接口的指定公共成员方法的方法对象。name参数是一个字符串,指定所需方法的简单名称。parameterTypes参数是一个类对象数组,按声明的顺序标识方法的形式参数类型。如果parameterTypes为null,则将其视为空数组
因此,您需要传递包含所需方法的所有参数类型的Class
var arg。对于您的方法,您应该编写如下内容:
Method m = TestRecommendations.class.getMethod("service", String[].class);
Method m = TestRecommendations.class.getMethod("level0ForUser", String[].class);
使用以下内容获取方法:
Method m = TestRecommendations.class.getMethod("service", String[].class);
Method m = TestRecommendations.class.getMethod("level0ForUser", String[].class);
然后像这样调用:
m.invoke(new TestRecommendations(), new Object[] { new String[]{ "A", "B", "C" } } );
使用以下内容获取方法:
Method m = TestRecommendations.class.getMethod("service", String[].class);
Method m = TestRecommendations.class.getMethod("level0ForUser", String[].class);
然后像这样调用:
m.invoke(new TestRecommendations(), new Object[] { new String[]{ "A", "B", "C" } } );
哦,好的,那么我如何传递参数呢?在哪里传递
参数数组?我的方法确实有一个特定的声明,正如我在问题中向您展示的,我的方法只接受一个字符串数组。请你检查一下好吗?哦,对不起,我没听清楚你的问题。修复加上一个用于特殊效果哦,好的,那么我如何传递参数呢?在哪里传递参数数组?我的方法确实有一个特定的声明,正如我在问题中向您展示的,我的方法只接受一个字符串数组。请你检查一下好吗?哦,对不起,我没听清楚你的问题。固定加上一个用于特殊效果