关于java final,并非不可更改值
来源:互联网 发布:大数据特征 5v 编辑:程序博客网 时间:2024/05/17 21:39
对于final型的变量,一般情况下是在赋值后就不能改变值了。但是,对于数组,仍然能够修改元素值。例如:
int counter = 0;Date[] dates = new Date[100];for(int i = 0; i< dates; i++){ dates[i] = new Date(){ public int compareTo(Date other){ counter++;//ERROR return super.compareTo(other); } }}
上例中,counter++出错误的原因是:dates[i] = new Date(){...}创建了一个本地内部类(Local inner class),传递给该本地内部类的变量都要转换为final,这样的原因是new Date()只会在内存中临时存在,会被JVM删除,所以counter要为final型;
但是,如果像下面这样就可以修改counter的值了:
final int[] counter = new int[1];for(int i=0; i<dates.length; i++){ dates[i] = new Date(){ public int compareTo(Date other){ counter[0]++; return super.compareTo(other); } }}
数组仍然被定义为final,仅仅意味着我们不能将其赋值为其它数组,我们可以修改数组元素的值。
0 0
- 关于java final,并非不可更改值
- 关于set元素的不可直接更改
- 关于Java中的final
- 关于Java中的final
- 关于Java中的final
- 关于Java中的final
- 关于Java的final
- 关于Java中的final
- 相对论并非遥不可及
- java List<String> 元素不可更改 例子
- 关于Java中的final关键字
- 关于Java中的关键字final
- java编程思想-关于final
- 关于Java中的final关键字
- 关于Java中的final转载
- 关于Java final修饰符
- java基础:关于final关键字
- Java-关于final修饰符
- 物联通公司红外转发器的对码流程
- Android中GridView的应用
- 集合知识点
- Swift Compiler Error Integer literal overflows when stored into 'UInt8'
- Java的swing编程(二)
- 关于java final,并非不可更改值
- ArcGIS教程:模糊分类的工作原理
- TypedValue.applyDimension
- ActiveX 方法和事件
- EJB到底为何物?
- 可重入代码
- [Android自定义控件] Android自定义控件
- uva10025 The ? 1 ? 2 ? ... ? n = k problem
- Hibernate SQL 方言(hibernate.dialect)