美文网首页
对于setAccessible方法的理解

对于setAccessible方法的理解

作者: 倚仗听江 | 来源:发表于2020-12-17 14:45 被阅读0次

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

    @org.junit.Test
        public void test2() throws IllegalAccessException {
            People people = new People();
            Class<? extends People> aClass = people.getClass();
            people.setName("sherlock");
            people.setAge(18);
            Field[] declaredFields = aClass.getDeclaredFields();
            for (Field field : declaredFields) {
    //            field.setAccessible(true);
                System.out.println(field.get(people));
            }
        }
    
    不使用setAccessible方法.png

    使用 setAccessible() 可以临时改变访问权限,就可以获取私有成员变量的值。

    @org.junit.Test
        public void test2() throws IllegalAccessException {
            People people = new People();
            Class<? extends People> aClass = people.getClass();
            people.setName("sherlock");
            people.setAge(18);
            Field[] declaredFields = aClass.getDeclaredFields();
            for (Field field : declaredFields) {
                field.setAccessible(true);
                System.out.println(field.get(people));
            }
        }
    
    使用setAccessible方法.png

    相关文章

      网友评论

          本文标题:对于setAccessible方法的理解

          本文链接:https://www.haomeiwen.com/subject/kzrzgktx.html