JODE

如何从Java中的其他类读取私有字段的值?

爱⌒轻易说出口 提交于 2020-02-27 05:02:30
我在第三方 JAR 设计的课程设计不佳,需要访问其 私有 字段之一。 例如,为什么我需要选择私有字段? class IWasDesignedPoorly { private Hashtable stuffIWant; } IWasDesignedPoorly obj = ...; 我如何使用反射来获取 stuffIWant 的价值? #1楼 为了访问私有字段,您需要从类的 声明 字段中获取它们,然后使其可访问: Field f = obj.getClass().getDeclaredField("stuffIWant"); //NoSuchFieldException f.setAccessible(true); Hashtable iWantThis = (Hashtable) f.get(obj); //IllegalAccessException 编辑 :正如 aperkins 所评论的 那样 ,访问字段,将其设置为可访问并获取值都将抛出 Exception ,尽管上面仅提到了您需要注意的所有 检查 异常。 如果您请求的字段名称与声明的字段不对应,则将引发 NoSuchFieldException 。 obj.getClass().getDeclaredField("misspelled"); //will throw NoSuchFieldException