访问非公开权限的构造器,方法、属性
暴力访问
import java.lang.reflect.Field;
import org.junit.Test;
public class AccessViolence {
@Test
public void accessViolence(String className) throws ClassNotFoundException, NoSuchFieldException, SecurityException, InstantiationException, Exception {
Class cls = Class.forName(className);
//暴力访问其属性
Field fld=cls.getDeclaredField("id");
Object obj=cls.newInstance();
fld.setAccessible(true);//打开暴力访问的开关
fld.set(obj, "007");
//****注意:setAccessible()该方法是Field、Method和Constructor的公共父类,因此都可以调用以进行暴力访问
}
}