在建立狀態後無法更改其狀態的物件稱為不可變物件。一個物件不可變的類稱為不可變類。不變的物件可以由程式的不同區域共用而不用擔心其狀態改變。
不可變物件本質上是執行緒安全的。
以下程式碼建立了不可變類的範例。
public class IntWrapper {
private final int value;
public IntWrapper(int value) {
this.value = value;
}
public int getValue() {
return value;
}
}
下面顯示如何建立IntWrapper
類的物件:
IntWrapper wrapper = new IntWrapper(101);
在這一點上,wrapper
物件儲存101
值,並且沒有辦法改變它。因此,IntWrapper
類是一個不可變的類,它的物件是不可變的物件。
但是,最好將所有範例變數宣告為final
,以便Java編譯器在編譯期間強制執行不可變性。