概述
小编典典
您需要执行此操作的事实表明设计存在缺陷。
但是,可以按照以下步骤进行操作:
class A
{
private int privateField = 3;
}
class B extends A
{}
class C extends B
{
void m() throws NoSuchFieldException, IllegalAccessException
{
Field f = getClass().getSuperclass().getSuperclass().getDeclaredField("privateField");
f.setAccessible(true); // enables access to private variables
System.out.println(f.get(this));
}
}
致电:
new C().m();
Andrzej Doyle所说的 “提高类层次结构”的 一种方法如下:
Class c = getClass();
Field f = null;
while (f == null && c != null) // stop when we got field or reached top of class hierarchy
{
try
{
f = c.getDeclaredField("privateField");
}
catch (NoSuchFieldException e)
{
// only get super-class when we couldn't find field
c = c.getSuperclass();
}
}
if (f == null) // walked to the top of class hierarchy without finding field
{
System.out.println("No such field found!");
}
else
{
f.setAccessible(true);
System.out.println(f.get(this));
}
2020-11-01
最后
以上就是聪慧秋天为你收集整理的java 反射父类私有属性值_如何在Java中通过反射访问父类的父类的私有字段?的全部内容,希望文章能够帮你解决java 反射父类私有属性值_如何在Java中通过反射访问父类的父类的私有字段?所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复