更新時間:2023-08-23 來源:黑馬程序員 瀏覽量:
不可變對象(Immutable Object)是指一旦創(chuàng)建后,其狀態(tài)就不能被修改或改變的對象。在Java中,不可變對象具有以下特征:
1.狀態(tài)不可變性(State Immunity):對象的屬性值不能被修改。
2.線程安全性(Thread Safety):由于不可變對象的狀態(tài)不能改變,多線程訪問時不需要額外的同步措施,因此是線程安全的。
3.安全性(Security):不可變對象的值不能被惡意修改,因此適用于安全敏感的上下文。
4.可重用性(Reusability):由于不可變對象的狀態(tài)不變,可以在不擔(dān)心副作用的情況下多次使用。
通過將類聲明為final,防止其他類繼承該類,從而防止子類修改其狀態(tài)。
確保屬性不能被外部直接訪問,并且一旦賦值后就不能再修改。
不要提供修改對象狀態(tài)的方法,包括setter方法。
提供方法來獲取對象的屬性值,但不要提供方法來修改屬性值。
以下是一個示例,演示如何創(chuàng)建一個不可變的Java類:
public final class ImmutablePerson { private final String name; private final int age; public ImmutablePerson(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public int getAge() { return age; } }
在這個示例中,ImmutablePerson類具有兩個私有的final屬性,它們只能在構(gòu)造函數(shù)中初始化,并且沒有提供修改它們的方法。因此,ImmutablePerson是一個不可變對象,一旦創(chuàng)建就不能修改其狀態(tài)。
通過遵循上述模式,我們可以創(chuàng)建不可變對象,這有助于確保代碼的可維護(hù)性、線程安全性和安全性。