zl程序教程

您现在的位置是:首页 >  后端

当前栏目

java Field.canAccess 和 Field.isAccessible

JAVA Field
2023-09-27 14:21:32 时间

如果 Field.isAccessible 已经过时,则使用 Field.canAccess
官方Api
boolean Field.canAccess(Object obj)

    Object obj : an instance object of the declaring class of this reflected
    object if it is an instance method or field (此类的声明类的实例对象对象(如果是实例方法或字段))

return : if the caller can access this reflected object.

Field.isAccessible 和 Field.canAccess
true 则指示反射的对象在使用时应该取消 Java 语言访问检查。
false 则指示反射的对象应该实施 Java 语言访问检查。

简单来说就是 true 时你可以访问此属性,否则不行。可以通过 setAccessible 来设置,我们一般这样使用:
如果没有实例对象

//如果没有实例对象
if (!field.canAccess(null)) {
    field.setAccessible(true);
}
//或者
if (!field.isAccessible()) {
    field.setAccessible(true);
}


如果有实例对象

//如果有实例对象
Object obj = new Object();
if (!field.canAccess(obj)) {
    field.setAccessible(true);
}