Man*_*ani 13 java integer immutability
我知道整数在Java中是不可变的.但为什么这样设计呢?
在提出这个问题之前,我通过了其他答案:
但我找不到强制整数强制不变的用例.是否存在像String这样的技术原因?
我知道有些包装就像AtomicInteger可变的一样.
更新:
从谈话中,没有普遍的理由可以强制整数是不可变的.然而,通过做不变,它提供了答案中提到的一些奖励.
比如安德烈的这句话
缓存的可能性.
其他人正在减少全球状态
更容易多线程
Dur*_*dal 21
您将找不到java.lang包装必须是不可变的强制性原因.仅仅因为这是一个设计决定.他们本来可以做出决定.语言设计者必须在可变和不可变之间做出选择.他们选择了不变的.而已.
尽管有一些令人信服的(IMO)原因使它们变得不可变:
这符合String.你提供同样的道理String是不变的适用Integer等,以及(如想在属性映射端口号).这通常适用于任何可变类型.
不可变类型排除了在通过修改通过getter获得的值不自觉地改变对象成员值时可以发现的过多难以发现的错误.当类型不可变时,它可以节省大量的防御性复制.最臭名昭着的例子是java.util.Date,这通常是一种痛苦,因为它是可变的(除了API问题).
同样不可变类型允许使用共享实例,例如Integer对常用值(参见Integer.valueOf(int)).
价值的身份可以1改变吗?会变成2吗?不。这就是为什么Integer其他数字类型是不可变的。它们旨在为该身份建模。
| 归档时间: |
|
| 查看次数: |
11699 次 |
| 最近记录: |