【发布时间】:2023-03-18 08:05:01
【问题描述】:
给定:
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));
【问题讨论】:
-
myA.class不起作用。你需要myA.getClass(); -
@MarkoTopolnik 我与 myA.class 有类似的反射工作代码。我的代码实际上是一个方法
private void myMethod(Class<?> c),我用myMethod(myA.class);调用它。但是getClass()也可以使用 -
除非你有一个称为
myA的类,否则它甚至不是有效的Java语法。 -
@MarkoTopolnik 对不起,我的错误。你是对的,它应该是
A.class我会编辑。 -
@MarkoTopolnik 我更正了问题中的代码。
myA是myB的一个字段,所以Class<?>对象应该是B 类型。
标签: java reflection indirection