在創(chuàng)建狀態(tài)后無法更改其狀態(tài)的對象稱為不可變對象。一個對象不可變的類稱為不可變類。不變的對象可以由程序的不同區(qū)域共享而不用擔(dān)心其狀態(tài)改變。
不可變對象本質(zhì)上是線程安全的。
以下代碼創(chuàng)建了不可變類的示例。
public class IntWrapper {
private final int value;
public IntWrapper(int value) {
this.value = value;
}
public int getValue() {
return value;
}
}
下面顯示如何創(chuàng)建IntWrapper
類的對象:
IntWrapper wrapper = new IntWrapper(101);
在這一點上,wrapper
對象保存101
值,并且沒有辦法改變它。因此,IntWrapper
類是一個不可變的類,它的對象是不可變的對象。
但是,最好將所有實例變量聲明為final
,以便Java編譯器在編譯期間強(qiáng)制執(zhí)行不可變性。