美文网首页
对于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