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);
}
相关文章
- Java 中使用 public,private 和 protected 修饰的方法
- Caused by: java.lang.IllegalArgumentException: Can not set int field reyo.sdk.enity.xxx.xxx to java.lang.Long
- 单机下如何让Java程序支持百万长连接,你知道吗,阿里专家原创
- java 格式化
- Java SE之反射技术[Class,Field](一)
- Java基础(5)-Java数据类型
- 终于,我读懂了所有Java集合——queue篇
- 成功解决:java.sql.SQLSyntaxErrorException: Unknown column ‘origin_name‘ in ‘field list‘
- Flink大数据实时计算系列-第一个程序JAVA版本
- java文件的基本操作示例
- 【Java设计模式】装饰模式
- Java中使用静态方法的情况和原因
- 1030 完美数列(JAVA)
- 大数据必学Java基础(一百二十):Maven工程的介绍与创建
- 大数据必学Java基础(三十四):面向对象内存分析
- JAVA类继承机制代码
- Java多线程知识小抄集(一)