Reflection Java reflection assignment of rights and static properties

When a class is private property, you need to be

 fieldName.setAccessible(true);

When a property is a static property class time, directly

 itemListField.set(null, arrayList);

Examples:

// Get the class 
Class mediaItemClazz = Class.forName ( "io.rong.imkit.plugin.image.PictureSelectorActivity $ MediaItem" );
// Get attributes Field, uriField
= mediaItemClazz.getDeclaredField ( "uri" );
// set access permissions uriField .setAccessible (
to true ); Field, mediaTypeField = mediaItemClazz.getDeclaredField ( "mediaType" ); mediaTypeField.setAccessible ( to true );
// instantiate an object Object Item
= mediaItemClazz.newInstance ();
// set properties uriField.set (Item,
the 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);

 

Guess you like

Origin www.cnblogs.com/hbolin/p/11512356.html