java 怎么更改final的值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 怎么更改final的值相关的知识,希望对你有一定的参考价值。

这个用到了java的反射机制,可不可以修改分为两种情况:

    当final修饰的成员变量在定义的时候就初始化了值,那么java反射机制就已经不能动态修改它的值了。

2. 当final修饰的成员变量在定义的时候并没有初始化值的话,那么就还能通过java反射机制来动态修改它的值。

具体方法可以查看java的反射机制,这里说明一下为什么第一种方法不可以修改,第二种方法可以修改:

当成员变量在定义的时候就初始化了值时(如:name="zhangsan";),编译期间final类型的数据自动被优化了,即:所有用到该变量的地方都被替换成了常量。所以 get方法在编译后自动优化成了return "zhangsan"; 而不是 return this.name;

参考技术A 对于一个final变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象。本回答被提问者和网友采纳

以上是关于java 怎么更改final的值的主要内容,如果未能解决你的问题,请参考以下文章

解析Java中final关键字的各种用法

Java 中的“final”关键字是如何工作的? (我仍然可以修改对象。)

Java学习之final浅谈

在java的Map集合中,怎样更改value的值

Java关键字——final

在java的Map集合中,怎样更改value的值?