这个问题是关于java反射的。
- 我有一个循环,里面有一个方法m。m随每次迭代而变化
- m返回某个类型的数组,该数组也发生了变化(因为循环的每次迭代都有一个新方法)
- 我需要遍历每个类型,并调用一个名为getRetVal()的方法
代码如下:
for(Object ro: m.invoke(argList[0])
{
getRetValMethod = ro.getClasss().getMethod("getRetVal", null);
Object co = getRetValMethod.invoke(null);
....
问题是,invoke返回一个没有迭代器的Object类型
您可以直接转换为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
来检查要走哪条路径(或者两者都不走)。