1

这个问题与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 返回一个没有迭代器的 Object 类型

4

1 回答 1

0

您可以转换为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来检查要走的路径(或都不走)。

于 2013-08-12T16:03:50.193 回答