专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

反射的访问权限setAccessible

isAccessible()和setAccessible(true);

1、 当isAccessible()的结果是false时不允许通过反射访问该字段
2、 当该字段时private修饰时isAccessible()得到的值是false,必须要改成true才可以访问
3、 所以 f.setAccessible(true);得作用就是让我们在用反射时访问私有变量

package com.test;

public class AccessibleTest {

    private int id;  
    private String name;  

    public AccessibleTest() {  

    }  

    public int getId() {  
        return id;  
    }  

    public void setId(int id) {  
        this.id = id;  
    }  

    public String getName() {  
        return name;  
    }  

    public void setName(String name) {  
        this.name = name;  
    }  

}

package com.test;

import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;

public class Test {

    public static void main(String[] args) throws ClassNotFoundException, IllegalArgumentException, IllegalAccessException {

        Class clazz = Class.forName("com.test.AccessibleTest");  
        AccessibleTest at = new AccessibleTest();

        at.setId(1);  
        at.setName("AT");  

        for (Field f : clazz.getDeclaredFields()) {  

            System.out.println(f.isAccessible());
            f.setAccessible(true);//AccessibleTest类中的成员变量为private,故必须进行此操作  
            System.out.println(f.get(at));//获取当前对象中当前Field的value  
        }  

    }
}

false
1
false
AT

https://blog.csdn.net/yuanzhou314/article/details/43032067

Java反射中的setAccessible()方法是否破坏了类的访问规则 https://blog.csdn.net/xiangwanpeng/article/details/53220158

文章永久链接:https://tech.souyunku.com/23684

未经允许不得转载:搜云库技术团队 » 反射的访问权限setAccessible

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们