更改参数量的Java函数调用
我有个问题。 当我的程序运行时,我得到一个带有参数(我事先不知道确切的数量)、函数名和类名的请求。我在运行时加载该类,并希望调用请求中给出的方法。我现在的问题是: 如何调用参数量不断变化的函数更改参数量的Java函数调用,java,function,methods,dynamic,runtime,Java,Function,Methods,Dynamic,Runtime,我有个问题。 当我的程序运行时,我得到一个带有参数(我事先不知道确切的数量)、函数名和类名的请求。我在运行时加载该类,并希望调用请求中给出的方法。我现在的问题是: 如何调用参数量不断变化的函数 myClass.getMethod(this.metaData.getFunctionName(), java.lang.Integer); 这是一个正常的电话。 但是我想要这样的东西 myClass.getMethod(this.metaData.getFunctionName(), ..args);
myClass.getMethod(this.metaData.getFunctionName(), java.lang.Integer);
这是一个正常的电话。
但是我想要这样的东西
myClass.getMethod(this.metaData.getFunctionName(), ..args);
myClass.getMethod(this.metaData.getFunctionName(), for(param p: in request = new param));
还是像这样
myClass.getMethod(this.metaData.getFunctionName(), ..args);
myClass.getMethod(this.metaData.getFunctionName(), for(param p: in request = new param));
我知道这是不可能的,但从另一个角度看可能吗?还是我必须事先知道确切的金额
编辑解决方案:
@LppEdd发布了解决方案,@DawoodibnKareem也在评论中提到了这一点。如果有一个用(…args)定义的函数,则可以传递一个数组,数组中的每个元素都算作传递的参数
我知道这是非常不安全的,但安全性在某种程度上是在该项目中给出的
rgds,
丹尼斯你可能想要
private Class<?>[] buildParameterTypes(final List<String> types) {
return types.stream()
.map(typeStr -> {
try {
return Class.forName(typeStr);
} catch (final ClassNotFoundException e) {
throw new IllegalArgumentException(e);
}
}).toArray(Class[]::new);
}
请求必须以字符串数组的形式发送参数类型
[
"java.lang.String",
"java.lang.Integer",
...
]
但是,是的,不要这样做。
顺便说一句,你是在说一个网络请求吗?哪种请求?您可能需要类似的请求
private Class<?>[] buildParameterTypes(final List<String> types) {
return types.stream()
.map(typeStr -> {
try {
return Class.forName(typeStr);
} catch (final ClassNotFoundException e) {
throw new IllegalArgumentException(e);
}
}).toArray(Class[]::new);
}
请求必须以字符串数组的形式发送参数类型
[
"java.lang.String",
"java.lang.Integer",
...
]
但是,是的,不要这样做。
顺便说一句,你是在说一个网络请求吗?哪种请求?听起来很危险。谁在发送此请求?所有参数都是相同类型的吗?您在寻找吗?客户端正在发送此请求,并且参数的类型不同,它们甚至可以是自定义对象。这听起来非常不安全。听起来很危险。谁在发送此请求?所有参数都是相同类型的吗?您在寻找吗?客户端正在发送此请求,并且参数的类型不同,它们甚至可以是自定义对象。这听起来非常不安全。这就是解决方案。但我的支持票不可见。它来自一个post请求,该请求被映射到一个请求对象。但是安全性在这个项目中以某种形式给出了^^。这就是解决方案。但我的支持票不可见。它来自一个post请求,该请求被映射到一个请求对象。但是在这个项目中,安全性是以某种形式给出的。