栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何在Java中通过反射访问父类的父类的私有字段?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在Java中通过反射访问父类的父类的私有字段?

您需要执行此操作的事实表明设计存在缺陷。

但是,可以按照以下步骤进行操作:

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));}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/515261.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号