一、前言
关于fest-reflect源码包中的org.fest.reflect.util.Accessibles类,实现对Class类改变私有属性作用域的makeAccessible、setAccessible公共处理。
二、源码说明
package org.fest.reflect.util;@b@@b@import java.lang.reflect.AccessibleObject;@b@import java.security.AccessController;@b@import java.security.PrivilegedAction;@b@@b@public final class Accessibles@b@{@b@ public static void setAccessibleIgnoringExceptions(AccessibleObject o, boolean accessible)@b@ {@b@ try@b@ {@b@ setAccessible(o, accessible);@b@ }@b@ catch (RuntimeException ignored)@b@ {@b@ }@b@ }@b@@b@ public static void makeAccessible(AccessibleObject o)@b@ {@b@ setAccessible(o, true);@b@ }@b@@b@ public static void setAccessible(AccessibleObject o, boolean accessible)@b@ {@b@ AccessController.doPrivileged(new SetAccessibleAction(o, accessible));@b@ }@b@@b@ private static class SetAccessibleAction implements PrivilegedAction<Void> {@b@ private final AccessibleObject o;@b@ private final boolean accessible;@b@@b@ SetAccessibleAction(AccessibleObject o, boolean accessible) {@b@ this.o = o;@b@ this.accessible = accessible;@b@ }@b@@b@ public Void run() {@b@ this.o.setAccessible(this.accessible);@b@ return null;@b@ }@b@ }@b@}