1. 首页
  2. 编程语言
  3. Java
  4. Java 反射修改类的常量值、静态变量值、属性值实例详解

Java 反射修改类的常量值、静态变量值、属性值实例详解

上传者: 2021-06-19 09:36:45上传 PDF文件 76.51 KB 热度 20次

前言有的时候,我们需要修改一个变量的值,但变量也许存在于 Jar 包中或其他位置,导致我们不能从代码层面进行修改,于是我们就用到了下面的场景,通过反射来进行修改变量的值。定义一个实体类利用反射修改私有静态常量方法修改私有静态常量测试结果。而且在调试的过程中发现,在第二次输出的时候,内存中的Bean.INT_VALUE是已经变成了200,但是System.out.println输出的结果却依然时诡异的100?!奇怪的原因对于基本类型的静态常量,JAVA在编译的时候就会把代码中对此常量中引用的地方替换成相应常量值。这本身是JVM的优化代码提高运行效率的一个行为,但是就会导致我们在用反射改变此常量值时出现类似不生效的错觉。

用户评论