[code=java]final ArrayList list = new ArrayList();[/code]
将变量用final修饰就说明这个变量的再赋值之后不能再次赋值
[code=java]
list = null ;
[/code]
就不可以了
但是
[code=java]
list.add("aaa");
[/code]可以 为什么呢?
因为list的集合里面存的知识一个对象的引用他是在栈内存里面的,当你执行
list = null ;的时候就是让这个集合的引用不指向这个对象,也就相当于对final变量重新赋值。
但是这个变量所指的对象里面的改变就和我没关系了
简单的说我代表这个结合,我里面有一个元素指向另外一个人,至于那个人最后出车祸少胳膊少腿没关系,不归我管,但是要是让我再指向另外的第三个人就不干了 |