|
1
146
|
|
|
2
33
最终的和不变的是不同的。
这个
但是,如果属性为self是可修改的,那么可以执行刚才描述的操作。 例如
如果我们实例化这个类,我们将无法将其他值赋给属性
所以这是不可能的:
但是,如果它自身的对象是这样可变的:
然后,可以更改该可变对象包含的值。
这与您的帖子具有相同的效果:
在这里,您没有更改实例的值,而是在修改其内部状态(via,providers.add方法) 如果要防止类定义发生如下更改:
但是,这可能没有多大意义:) 顺便问一下,你也必须 synchronize access to it 基本上是出于同样的原因。 |
|
|
3
24
误解的关键在于你问题的标题。这不是 对象 这是最后一个,这是 变量 . 变量的值不能更改,但其中的数据可以更改。 始终记住,当您声明引用类型变量时,该变量的值是引用,而不是对象。 |
|
|
4
11
最终的 只是意味着不能更改引用。如果实例声明为final,则不能将其重新分配给其他引用。对象的内部状态仍然是可变的。
会引发编译错误 |
|
|
5
6
这是导游 making an object immutable . |
|
6
4
最终的和不变的不是同一回事。“最终”表示不能重新分配引用,因此您不能说
不可变意味着不能修改对象本身。一个例子是
|
|
7
2
Java没有内置于语言中的不可变概念。没有办法将方法标记为一个变异体。因此,语言无法强制对象不可变。 |
|
|
Alaa AbuZarifa · 将方法参数复制到最终temp变量无效 8 年前 |
|
|
CameronCoob · 最终var更改值JAVA 8 年前 |
|
|
gcolucci · 函数调用后最终对象失去属性值 8 年前 |
|
|
Goji Berry · 错误:无法为最终变量赋值 8 年前 |