这个问题是关于java反射的。
- 我有一个循环,里面有一个方法 m 。 m 随着每次迭代而变化。
- m 返回某种类型的数组,该数组也会发生变化(因为每次循环迭代我们都有一个新方法)。
- 我需要迭代每种类型并调用名为 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/