1

鉴于:

public class A {
   public int n;
   public int func(Object arg) {...}
   ...
}

public class B {
    private A myA;
    ...
}

private B myB;

当使用反射时,myB我得到了myA; 我如何访问它的成员和方法class A?例如,假设我有一个字符串"myA.n"并给定myB我需要访问的对象myA.n

Class<?> c = B.class; // or myB.getClass()
Field f = c.getField("myA");
int p = ???????? // reflection for int p = myA.n;
int q = ???????? // reflection for int q = myA.func(new Integer(3));
4

1 回答 1

0

您将需要调用Class.getField()并遍历它们以寻找正确的功能。

For (Field field : class.getField()) {
  if (field.getName().equals("...")) {
    ...
  }
}

这样做的原因是可以有多个同名不同参数类型的字段(即字段名被重载)。

getField()返回类中的公共字段,包括来自超类的公共字段。

于 2013-06-04T12:00:50.247 回答