gpt4 book ai didi

java - 如何在不知道参数数量的情况下使用 java.lang.reflect 调用方法?

转载 作者:行者123 更新时间:2023-12-02 03:45:47 26 4
gpt4 key购买 nike

我阅读了有关 java.öang.reflect 的教程,并找到了一种从类获取方法并使用给定参数调用它的方法,如下所示:

Method method = /*some initialization*/;
Object returnValue = method.invoke(null, "parameter-value1");

这会调用静态方法“method”,该方法将“parameter-value1”作为其唯一参数。

现在已经很简洁了,但是还不够动态。我想调用一个只有方法对象的方法,并插入未指定数量的参数。假设我有 Method 方法Object[] 参数(用作调用 method 的参数)。

是否可以编写一个简短的方法来使用反射来调用具有给定参数的任何方法?如果是这样:如何实现这一目标?

最佳答案

不,这是不可能的。您可以使用给定的Object[]作为参数来调用该方法。但有一些限制:

  • 参数的数量必须与方法的参数数量相匹配,因此不可能使用任意数量的参数来调用它。嗯,这是可能的,但除了抛出异常之外你不会得到任何东西。
  • 参数的类型必须与方法所需的参数类型匹配。与上面相同,无效的参数类型会导致异常。

幸运的是,这两个都是已知的,感谢 Method#getParameterTypes() :

Class<?>[] parameterTypes = someMethod.getParameterTypes();
int parameterCount = parameterTypes.length;

关于java - 如何在不知道参数数量的情况下使用 java.lang.reflect 调用方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36320233/

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