• Java setAccessible方法作用


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

    这是JDK手册的中文说明:

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

     1 public class MyTest3 {
     2 
     3     
     4     public static void main(String[] args) throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException {
     5         Student student = new Student();
     6         Field field = student.getClass().getDeclaredField("name");
     7         field.setAccessible(true);
     8         System.out.println(field);
     9         Object object = field.get(student);
    10         System.out.println(object);
    11     }
    12     
    13     
    14     
    15 }
    16 
    17 
    18 class Student{
    19     
    20     private String name;
    21     
    22     private Integer age;
    23     
    24     private String sex;
    25 
    26     public String getName() {
    27         return name;
    28     }
    29 
    30     public void setName(String name) {
    31         this.name = name;
    32     }
    33 
    34     public Integer getAge() {
    35         return age;
    36     }
    37 
    38     public void setAge(Integer age) {
    39         this.age = age;
    40     }
    41 
    42     public String getSex() {
    43         return sex;
    44     }
    45 
    46     public void setSex(String sex) {
    47         this.sex = sex;
    48     }
    49     
    50 }
    View Code

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

    中文JDK的说明

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

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

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

    复制请注明出处,在世界中挣扎的灰太狼
  • 相关阅读:
    css 文本超过指定行数,显示省略号
    CSS 使radio和checkbox框,和文字对齐平行
    C# 使用InputStream接收 解析表单参数
    CSS 控制文本超出宽度,显示省略号
    C# 将http在线文件,保存到服务器指定位置
    C# Get请求
    C# POST请求
    js 使用XMLHttpRequest 上传文件,显示进度条
    js 验证字符长度,一个中文2个字符,英文和数字为1个字符
    iOS Carthage集成SnapKit
  • 原文地址:https://www.cnblogs.com/XingXiaoMeng/p/10046175.html
Copyright © 2020-2023  润新知