Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
具有动态参数数的java调用方法dnamicall_Java - Fatal编程技术网

具有动态参数数的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" } } );

哦,好的,那么我如何传递参数呢?在哪里传递
参数
数组?我的方法确实有一个特定的声明,正如我在问题中向您展示的,我的方法只接受一个字符串数组。请你检查一下好吗?哦,对不起,我没听清楚你的问题。修复加上一个用于特殊效果哦,好的,那么我如何传递参数呢?在哪里传递
参数
数组?我的方法确实有一个特定的声明,正如我在问题中向您展示的,我的方法只接受一个字符串数组。请你检查一下好吗?哦,对不起,我没听清楚你的问题。固定加上一个用于特殊效果