为什么在 Java 中声明数组 final 不能使其不可变?声明某些东西不是意味着它不能改变吗?
来自 question related to immutable array很明显,将数组声明为 final 并不会使它不可更改。
以下是可能的。
final int[] array = new int[] {0, 1, 2, 3};
array[0] = 42;
我的问题是:那么这里声明final的作用是什么?
最佳答案
final
只是关于它标记的reference; Java 中没有不可变数组这样的东西。当你说
private final int[] xs = new int[20];
你不能说
xs = new int[10];
稍后。这就是 final
的全部内容。更一般地说,确保对象不可变通常是一项艰巨的工作,并且充满了一系列微妙之处。语言本身并没有为此提供太多开箱即用的功能。
关于java - 为什么不将数组声明为 final 使其在 Java 中不可变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13979696/