リフレクションJavaリフレクション権の割り当てと静的プロパティ

クラスは私有財産であるときは、する必要があります

fieldName.setAccessible(真の);

プロパティは、直接、静的プロパティクラスの時間になると

itemListField.set(ヌル、ArrayListの);

例:

//クラスの取得
クラスmediaItemClazz = Class.forNameの( "io.rong.imkit.plugin.image.PictureSelectorActivity $ MediaItemを" );
//属性を取得する フィールド、uriField
= mediaItemClazz.getDeclaredField( "URI" );
//設定されたアクセス権限 uriField (.setAccessible
trueに フィールド、mediaTypeField = mediaItemClazz.getDeclaredField( "MEDIATYPE" ); mediaTypeField.setAccessible(真の);
//オブジェクトのインスタンス化 対象項目を
= mediaItemClazz.newInstance();
//プロパティを設定 uriField.set(項目、
この.mTakePictureUri.getPath()); mediaTypeField.set(項目、 1。); クラスholderClazz= Class.forNameの( "io.rong.imkit.plugin.image.PictureSelectorActivity $ PicItemHolder" );
//获取静态属性 フィールドitemListField
= holderClazz.getDeclaredField( "itemListの" )。 itemListField.setAccessible(真の); フィールドitemSelectedListField = holderClazz.getDeclaredField( "itemSelectedList" )。 itemSelectedListField.setAccessible(真の); ArrayListのArrayListを = 新しいArrayListを(); arrayList.add(アイテム)
//给静态属性赋值 itemListField.set(
ヌル、ArrayListの); itemSelectedListField.set(NULLNULL);

 

おすすめ

転載: www.cnblogs.com/hbolin/p/11512356.html