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的值的主要内容,如果未能解决你的问题,请参考以下文章