首页

基于fest-reflect源码包的Accessibles对类Class私有属性改为公用可访问通用处理

标签:Accessibles,类私有属性,访问作用域,Accessibles,AccessibleObject,PrivilegedAction     发布时间:2018-04-29   

一、前言

关于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@}