Java反射之反射权限和静态属性的赋值

Java反射之反射权限和静态属性的赋值

当一个类中的属性是private的时候,需要将

 fieldName.setAccessible(true);

当一个类的属性是静态属性的时候,则直接

 itemListField.set(null, arrayList);

参考例子:

// 获取类
Class mediaItemClazz = Class.forName("io.rong.imkit.plugin.image.PictureSelectorActivity$MediaItem");
// 获取属性
Field uriField = mediaItemClazz.getDeclaredField("uri");
// 设置访问权限
uriField.setAccessible(true);
Field mediaTypeField = mediaItemClazz.getDeclaredField("mediaType");
mediaTypeField.setAccessible(true);
// 实例化对象
Object item = mediaItemClazz.newInstance();
// 设置属性
uriField.set(item, this.mTakePictureUri.getPath());
mediaTypeField.set(item, 1);

Class holderClazz = Class.forName("io.rong.imkit.plugin.image.PictureSelectorActivity$PicItemHolder");
// 获取静态属性
Field itemListField = holderClazz.getDeclaredField("itemList");
itemListField.setAccessible(true);
Field itemSelectedListField = holderClazz.getDeclaredField("itemSelectedList");
itemSelectedListField.setAccessible(true);
ArrayList arrayList = new ArrayList();
arrayList.add(item);
// 给静态属性赋值
itemListField.set(null, arrayList);
itemSelectedListField.set(null, null);

复制代码

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值