java 获取私有字段内容_如何读取Java中的私有字段?

为了访问私有字段,您需要从类的声明字段中获取它们,然后使其可访问:

Field f = obj.getClass().getDeclaredField("stuffIWant"); //NoSuchFieldException

f.setAccessible(true);

Hashtable iWantThis = (Hashtable) f.get(obj); //IllegalAccessException

编辑:如已经由aperkins评论,访问该字段,将其设置为可访问和检索值将会引发异常,虽然唯一检查的异常你需要注意的是上面的注释。

如果您通过不对应于声明字段的名称请求字段,则会抛出NoSuchFieldException。

obj.getClass().getDeclaredField("misspelled"); //will throw NoSuchFieldException

如果字段不可访问(例如,如果它是私有的并且没有通过缺少f.setAccessible(true)行可访问),则将抛出IllegalAccessException。

可能抛出的RuntimeExceptions是SecurityExceptions(如果JVM的SecurityManager不允许您更改字段的辅助功能)或IllegalArgumentExceptions,如果您尝试访问的字段不是字段的类的类型的对象:

f.get("BOB"); //will throw IllegalArgumentException, as String is of the wrong type

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值