nay*_*yef 15 java final immutability
为什么不声明一个数组最终使它在Java中不可变?不宣称最终意味着它无法改变?
从与不可变数组相关的问题中可以清楚地看出,声明一个数组final并不会使它不可更改.
以下是可能的.
final int[] array = new int[] {0, 1, 2, 3};
array[0] = 42;
Run Code Online (Sandbox Code Playgroud)
我的问题是:那么在这里宣布决赛的功能是什么?
Mar*_*nik 33
final只是关于它标记的参考 ; 在Java中没有不可变数组这样的东西.当你说
private final int[] xs = new int[20];
Run Code Online (Sandbox Code Playgroud)
你不会被允许说
xs = new int[10];
Run Code Online (Sandbox Code Playgroud)
稍后的.这就是所有的东西final是什么.更一般地,确保对象是不可变的通常是艰苦的工作并且充满了一系列细微之处.开箱即用的语言本身并没有给出太多结果.
final意味着您无法更改引用 - 即您无法将另一个数组分配给该字段.
"不可变"意味着你不能改变数组的内容 - final对此没有影响.
如您的代码所示,您可以为数组的其中一个元素赋值,这不会更改对数组的引用