ใน Java สถานะของอ็อบเจ็กต์ที่ไม่เปลี่ยนรูปไม่สามารถแก้ไขได้หลังจากสร้างแล้ว แต่ต้องอ้างอิงอ็อบเจ็กต์อื่นอย่างแน่นอน มีประโยชน์มากในสภาพแวดล้อมแบบมัลติเธรดเนื่องจากหลายเธรดไม่สามารถเปลี่ยนสถานะของอ็อบเจ็กต์ได้ ดังนั้นอ็อบเจ็กต์ที่ไม่เปลี่ยนรูปจึงปลอดภัยสำหรับเธรด วัตถุที่ไม่เปลี่ยนรูปได้มีประโยชน์มากในการหลีกเลี่ยง coupling ชั่วขณะและมี atomicity ที่ล้มเหลวเสมอ
ในทางกลับกัน ออบเจ็กต์ที่เปลี่ยนแปลงได้จะมีฟิลด์ที่สามารถเปลี่ยนแปลงได้ อ็อบเจ็กต์ที่ไม่เปลี่ยนรูปแบบไม่มีฟิลด์ที่สามารถเปลี่ยนได้หลังจากสร้างออบเจกต์แล้ว
| ซีเนียร์ เลขที่ | คีย์ | วัตถุที่ไม่แน่นอน | วัตถุที่ไม่เปลี่ยนรูป |
|---|---|---|---|
| 1 | พื้นฐาน | เราสามารถแก้ไขสถานะของวัตถุที่เปลี่ยนแปลงได้หลังจากที่ถูกสร้างขึ้น | เราไม่สามารถแก้ไขสถานะของวัตถุได้หลังจากที่สร้างแล้ว |
| 2 | ความปลอดภัยของเธรด | วัตถุที่เปลี่ยนแปลงได้นั้นไม่ปลอดภัยสำหรับเธรด | วัตถุที่ไม่เปลี่ยนรูปเป็นเธรดที่ปลอดภัย |
| 3 | รอบชิงชนะเลิศ | คลาส Mutable ยังไม่จบ | เพื่อสร้างวัตถุที่ไม่เปลี่ยนรูป ให้คลาสสุดท้าย |
| 4 | ตัวอย่าง | โดยค่าเริ่มต้น คลาสทั้งหมดและวัตถุนั้นเปลี่ยนแปลงได้ตามธรรมชาติ | คลาสสตริงและแรปเปอร์ทั้งหมดเป็นตัวอย่างของคลาสที่ไม่เปลี่ยนรูปแบบ |
ตัวอย่างคลาสที่ไม่เปลี่ยนรูป
public final class ImmutableClass {
private String laptop;
public String getLaptop() {
return laptop;
}
public ImmutableClass(String laptop) {
super();
this.laptop = laptop;
}
}
public class Main {
public static void main(String args[]) {
ImmutableClass immutableClass = new ImmutableClass("Dell");
System.out.println(immutableClass.getLaptop());
}
} ตัวอย่างคลาส Muttable
public class MuttableClass {
private String laptop;
public String getLaptop() {
return laptop;
}
public void setLaptop(String laptop) {
this.laptop = laptop;
}
public MuttableClass(String laptop) {
super();
this.laptop = laptop;
}
}
public class Main {
public static void main(String args[]) {
MuttableClass muttableClass = new MuttableClass("Dell");
System.out.println(muttableClass.getLaptop());
muttableClass.setLaptop("IBM");
System.out.println(muttableClass.getLaptop());
}
}