java final 之 终极理解 简明扼要 通俗易懂

来源:互联网 发布:淘宝延长收货 编辑:程序博客网 时间:2024/06/05 18:18

首先我们来看一下一个小例子:

final List<Integer> list=new ArrayList<Integer>();
list.add(1);
list.add(2);
List<Integer>list2=new ArrayList<Integer>();
list=list2; 


这里list=list2处报编译错,是因为list是一个final的对象,是指它的引用不能再指向其他的实例。这里让它指向list2的实例 显然是有问题的,但是这里并不能说明list的值就不会变了。

我们再看一下下面的例子:


public class TestRefer {

public static void main(String[] args) {
final List<Integer> list=new ArrayList<Integer>();
list.add(1);
list.add(2);
List<Integer>list2=new ArrayList<Integer>();
//list=list2;

list2=list;
list2.add(3);
System.out.println(list.toString());

}


}

打印输出[1, 2, 3] 这说明list的值变了,是因为虽然list的引用不能再指向别的实例,但是可以让别的引用指向list的实例。

从而改变list的值。


0 0
原创粉丝点击