java Field.canAccess 和 Field.isAccessible
如果 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);
}
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· 解决跨域问题的这6种方案,真香!
· Windows 提权-UAC 绕过
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
2021-03-13 解决java.lang.ClassNotFoundException: org.slf4j.bridge.SLF4JBridgeHandler