gpt4 book ai didi

java.reflection : How can I do method. invoke(clazz, varargs) 具有动态数量的参数?

转载 作者:行者123 更新时间:2023-11-30 06:03:13 24 4
gpt4 key购买 nike

我想通过 method.invoke(clazz, varargs) 使用反射来使用不同数量的参数进行方法调用,并通过这种方式实现仅一次调用即可调用不同的方法,而不是通过显式的、硬编码的参数数量。目前我执行以下操作:

... 
determine method arguments via reflection
...
if (numberOfArguments == 0) {
method.invoke(clazzInstance, null);
} else if (numberOfArguments == 1) {
method.invoke(clazzInstance, arg0);
} else if (numberOfArguments == 2) {
method.invoke(clazzInstance, arg0, arg1);
} ... etc

有没有一种方法可以更优雅地做到这一点,而不需要显式检查参数的数量?

最佳答案

arg0arg1argsN收集到Object[]数组中,将大小截断为numberOfArguments 并传递它:

Object[] args = {arg0, arg1, ..., argsN};
method.invoke(clazzInstance, Arrays.copyOfRange(args, 0, numberOfArguments));

关于java.reflection : How can I do method. invoke(clazz, varargs) 具有动态数量的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52721654/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com