java - 为什么不将数组声明为 final 使其在 Java 中不可变?

标签 java immutability final

为什么在 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/

相关文章:

java - Web 服务返回 SID - 如何将结果存储为整数?

python - python 中的可变和不可变字符串

c# - 什么时候对不可变类型使用值和引用类型? (。网)

java - 更改最终 Integer 变量的值

c++ - 将基类函数标记为 virtual 和 final 有什么意义吗?

java - Jade - 事件循环的哪种行为?

java - 数据未保存 : object references an unsaved transient instance - save the transient instance before flushing

java - 为什么 Riak 将 "inavailable channel closed"消息记录为 ERROR

list - 代码质量/ Guava : clear and fill a final list or assign a new Immutablelist

java - 如何在 Java 的派生类构造函数中分配基类的最终变量?