情型1:static final属性,无法修改其值。

package m5.d7;  import java.lang.reflect.Field;  public class FieldTest {  public static void main(String[] args) {  try {  A a = new A();  Field field = a.getClass().getDeclaredField("a");  field.setAccessible(true);  field.set(a, 2);  System.out.println(field.get(a));  } catch (SecurityException e) {  e.printStackTrace();  } catch (NoSuchFieldException e) {  e.printStackTrace();  } catch (IllegalArgumentException e) {  e.printStackTrace();  } catch (IllegalAccessException e) {  e.printStackTrace();  }  }
}  class A {  private static final int a = 1;
}

运行

java.lang.IllegalAccessException: Can not set static final int field m5.d7.A.a to java.lang.Integer  at sun.reflect.UnsafeFieldAccessorImpl.throwFinalFieldIllegalAccessException(Unknown Source)  at sun.reflect.UnsafeFieldAccessorImpl.throwFinalFieldIllegalAccessException(Unknown Source)  at sun.reflect.UnsafeQualifiedStaticIntegerFieldAccessorImpl.set(Unknown Source)  at java.lang.reflect.Field.set(Unknown Source)  at m5.d7.FieldTest.main(FieldTest.java:16)

情型2:final属性,可以修改其值。

package m5.d7;  import java.lang.reflect.Field;  public class FieldTest {  public static void main(String[] args) {  try {  A a = new A();  Field field = a.getClass().getDeclaredField("a");  field.setAccessible(true);  field.set(a, 2);  System.out.println(field.get(a));  } catch (SecurityException e) {  e.printStackTrace();  } catch (NoSuchFieldException e) {  e.printStackTrace();  } catch (IllegalArgumentException e) {  e.printStackTrace();  } catch (IllegalAccessException e) {  e.printStackTrace();  }  }
}  class A {  private final int a = 1;
}

运行

2

  

  

  

使用反射修改final属性相关推荐

  1. java反射设置属性值_Java反射如何有效的修改final属性值详解

    前言 以前写过一篇 Java 反射修改 final 属性值,本文将在这里重新温习一下Java反射如何有效的修改final属性值,下面话不多说了,来一起看看详细的介绍: 假设有个类 class Pers ...

  2. fianl属性 java_Java反射如何有效的修改final属性值详解

    前言 以前写过一篇 Java 反射修改 final 属性值,本文将在这里重新温习一下Java反射如何有效的修改final属性值,下面话不多说了,来一起看看详细的介绍: 假设有个类 class Pers ...

  3. java 反射修改final变量_Java中final的属性值怎么利用反射机制进行修改

    Java中final的属性值怎么利用反射机制进行修改 发布时间:2020-12-02 17:31:07 来源:亿速云 阅读:96 作者:Leah 今天就跟大家聊聊有关Java中final的属性值怎么利 ...

  4. 利用反射修改final数据域

    当final修饰一个数据域时,意义是声明该数据域是最终的,不可修改的.常见的使用场景就是eclipse自动生成的serialVersionUID一般都是final的. 另外还可以构造线程安全(thre ...

  5. Java 反射修改类的常量值、静态变量值、属性值

    前言 有的时候,我们需要修改一个变量的值,但变量也许存在于 Jar 包中或其他位置,导致我们不能从代码层面进行修改,于是我们就用到了下面的场景,通过反射来进行修改变量的值. 定义一个实体类 class ...

  6. java 反射 static final_Java_反射_修改final static问题

    利用java的反射,在运行时将需要修改的常量强制更改成我们所需要的值 --这样就不用修改jxl库了,只要在我们项目中加几句就OK了,出问题的概率也会小很多. 于是就研究了一下,虽然最后还是发现在这个方 ...

  7. java反射 修改静态方法的值 setAccessible

    转载自 java反射 修改静态方法的值 setAccessible 这几天闲来无事.在网上看了一个题目,相信大家都知道这个题目 static void change(String str){str=& ...

  8. 修改value_Java 反射修改String引发的思考?

    今天看到一篇文章,问题是<String 真的是不可变的吗?>,题主最后通过反射机制修改了String 内部的char[] 对象的值,最终完成了String 的修改. 这里先上原博主的示例: ...

  9. JAVA反射修改常量,以及其局限

    转载自 JAVA反射修改常量,以及其局限 问题,以及一个解决方案 今天公司的JAVA项目碰到一个问题:在生成xls文件的时候,如果数据较多,会出现ArrayIndexOutOfBoundsExcept ...

最新文章

  1. Apache与Tomcat联系及区别(转)
  2. kenrel volatile关键字
  3. unit2--unit4单元文档
  4. java 利用ManagementFactory获取jvm,os的一些信息--转
  5. java中拼写xml
  6. Myeclipse中weblogic配置
  7. linux grpc,grpc linux下的编译使用-Go语言中文社区
  8. 关于VUE项目地图开发中大量点标记绘制一些总结
  9. k3 cloud 文件服务器搭建,k3cloud服务器推荐配置
  10. bcscale php,【PHP开发】bcscale timezone charset的设定说明
  11. Emmet插件比较实用常用的写法
  12. 网络多人游戏架构pdf_21秒看尽ImageNet屠榜模型,60+模型架构同台献艺
  13. 用户行为分析面面观之二
  14. 多个JVM之间,能否共用同样的类?
  15. Endnote--在参考文献列表中添加DOI
  16. 用C语言打印一个菱形图案!
  17. 牛客竞赛C/C++语言基础22198 选村长
  18. 基于Python+Django+MySQL的大学生信用评估系统
  19. Java基础强化训练——开发工具及输出语句训练
  20. windows编程之画笔

热门文章

  1. 1023. 组个最小数 (20)-PAT乙级真题
  2. Oracle之唯一性约束(UNIQUEConstraint)用法详解
  3. java 获取mongodb的连接数
  4. Android SDK 开发——发布使用踩坑之路
  5. 使用Eclipse将项目上传至远程GitLab
  6. ios textView显示不全
  7. hdu 5443 The Water Problem 线段树
  8. 查询数据表中重复记录
  9. linux查看java jdk安装路径
  10. C++ 栈展开如何防止内存泄露