如何访问一个对象的私有变量

如何访问一个对象的私有变量

Filed under: 项目日志 — zhangruimin @ 22:12 Edit This

为什么要访问一个对象的私有变量呢?在单元测试时可能要查看私有变量是否被正确赋值,也有可能单元测试时要用到一个对象让它的一个私有变量为特定值,但又没有set方法。

私有变量不能通过对象直接访问,但是并不是说一个类的私有变量就不能访问。有一个绝招就是利用反射机制。

/**
* Sets the id of doc to be docid by reflection.
*
* @param doc the WordSource to set id
* @param docid the document id to be set
*/
private void setDocId(WordSource doc, WordSourceId docid) throws Exception {
Field f = doc.getClass().getDeclaredField(”sourceId”);
f.setAccessible(true);
f.set(doc, docid);
f.setAccessible(false);
}

WordSource 有一个私有变量sourceId。因为WordSource 没有setSourceId方法,只有通过这种方式来得到一个特定sourceId  的WordSource 用于测试。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值