之前一直以为setAccessible()的取值是由成员变量的访问权限决定的,结果经过测试发现,不管成员变量的访问权限是public、protected、默认、还是private,isAccessible()方法都返回false,但是访问private修饰的成员变量时,需要setAccessible(true),否则抛出IllegalAccessException,而其他访问权限修饰的成员变量可以直接访问。所以 结论为:当isAccessible()的结果是false时,如果该字段是private修饰的不允许通过反射访问该字段 ,必须要改成true才可以访问 所以 setAccessible(true) 的作用就是让我们在反射时访问私有变量
Field类的setAccessible()
最新推荐文章于 2024-06-13 16:40:02 发布