Java setAccessible方法作用

在Java中可以通过反射进行获取实体类中的字段值,当未设置Field的setAccessible方法为true时,会在调用的时候进行访问安全检查,会抛出IllegalAccessException异常

Java setAccessible方法作用

这是JDK手册的中文说明:

Java setAccessible方法作用

那么,解决方案就是设置Field对象的Accessible的访问标志位为Ture,就可以通过反射获取私有变量的值,在访问时会忽略访问修饰符的检查,附上例子一枚。

 public class MyTest3 {

     public static void main(String[] args) throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException {
Student student = new Student();
Field field = student.getClass().getDeclaredField("name");
field.setAccessible(true);
System.out.println(field);
Object object = field.get(student);
System.out.println(object);
} } class Student{ private String name; private Integer age; private String sex; public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public Integer getAge() {
return age;
} public void setAge(Integer age) {
this.age = age;
} public String getSex() {
return sex;
} public void setSex(String sex) {
this.sex = sex;
} }

末尾补充下,Field类还有个静态方法,可以一次性设置多个Field字段为指定的值。

中文JDK的说明

Java setAccessible方法作用

第一个参数 array ,就是要设置flag标志位的Field对象的数组

第二个参数 flag  ,将array数组的所有Field对象设置为flag标识符的新值

*******************Method和Field的Accessible的用法一致*******************

上一篇:SpringBoot启动方式讲解和部署war项目到tomcat9


下一篇:markdown生成的a标签如何在新页面打开