我找到了一种通过 --- 获取继承成员并通过 class.getDeclaredFields();
访问私有成员的 class.getFields()
但我正在寻找私有继承字段。我怎样才能做到这一点?
原文由 benzen 发布,翻译遵循 CC BY-SA 4.0 许可协议
我找到了一种通过 --- 获取继承成员并通过 class.getDeclaredFields();
访问私有成员的 class.getFields()
但我正在寻找私有继承字段。我怎样才能做到这一点?
原文由 benzen 发布,翻译遵循 CC BY-SA 4.0 许可协议
这应该演示如何解决它:
import java.lang.reflect.Field;
class Super {
private int i = 5;
}
public class B extends Super {
public static void main(String[] args) throws Exception {
B b = new B();
Field f = b.getClass().getSuperclass().getDeclaredField("i");
f.setAccessible(true);
System.out.println(f.get(b));
}
}
(或 Class.getDeclaredFields
用于所有字段的数组。)
输出:
5
原文由 aioobe 发布,翻译遵循 CC BY-SA 4.0 许可协议
4 回答1.7k 阅读✓ 已解决
4 回答1.4k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
4 回答2.2k 阅读
3 回答1.1k 阅读✓ 已解决
2 回答824 阅读✓ 已解决
2 回答1.4k 阅读
事实上,我使用了一个复杂的类型层次结构,所以你的解决方案并不完整。我需要进行递归调用以获取所有私有继承字段。这是我的解决方案