gpt4 book ai didi

java - 如何迭代 invoke() 调用的返回结果?

转载 作者:行者123 更新时间:2023-12-01 04:28:52 26 4
gpt4 key购买 nike

这个问题是关于java反射的。

  1. 我有一个循环,里面有一个方法 m 。 m 随着每次迭代而变化。
  2. m 返回某种类型的数组,该数组也会发生变化(因为每次循环迭代我们都有一个新方法)。
  3. 我需要迭代每种类型并调用名为 getRetVal() 的方法。

代码如下所示:

 for(Object ro: m.invoke(argList[0])
{
getRetValMethod = ro.getClasss().getMethod("getRetVal", null);
Object co = getRetValMethod.invoke(null);
....

问题是,invoke 返回一个没有迭代器的对象类型

最佳答案

您可以直接转换到Iterable<?> :

Iterable<?> iterable = (Iterable<?>) m.invoke(argList[0]);
for (Object x : iterable) {
...
}

编辑:现在你已经说过它始终是引用类型的数组,你可以转换为 Object[]相反:

Object[] array = (Object[]) m.invoke(argList[0]);
for (Object x : array) {
...
}

如果您需要处理这两种情况,可以使用instanceof检查要走哪条路径(或都不走)。

关于java - 如何迭代 invoke() 调用的返回结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18191523/

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