更新時間: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)不變,可以在不擔心副作用的情況下多次使用。
通過將類聲明為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)建不可變對象,這有助于確保代碼的可維護性、線程安全性和安全性。