Computer >> Máy Tính >  >> Lập trình >> Java

Sự khác biệt giữa đối tượng có thể thay đổi và không thể thay đổi

Trong Java, không thể sửa đổi trạng thái của đối tượng không thể thay đổi sau khi nó được tạo bởi vì nó chắc chắn tham chiếu đến các đối tượng khác. Chúng rất hữu ích trong môi trường đa luồng vì nhiều luồng không thể thay đổi trạng thái của đối tượng vì vậy các đối tượng không thay đổi được an toàn cho luồng. Các đối tượng bất biến rất hữu ích để tránh khớp nối tạm thời và luôn có tính nguyên tử không thành công.

Mặt khác, các đối tượng có thể thay đổi có các trường có thể thay đổi, các đối tượng bất biến không có trường nào có thể thay đổi sau khi đối tượng được tạo.

Sr. Không. Phím Đối tượng có thể thay đổi Đối tượng bất biến
1
Cơ bản
Chúng ta có thể sửa đổi trạng thái của một đối tượng có thể thay đổi sau khi nó được tạo
Chúng tôi không thể sửa đổi trạng thái của đối tượng sau khi nó được tạo.
2
An toàn chuỗi
Các đối tượng có thể thay đổi không an toàn cho chuỗi
Các đối tượng bất biến là luồng an toàn.
3
Cuối cùng
Lớp có thể thay đổi không phải là lớp cuối cùng
Để tạo một đối tượng không thay đổi, hãy tạo lớp cuối cùng
4
Ví dụ
Theo mặc định, tất cả các lớp và đối tượng của nó đều có thể thay đổi theo bản chất.
Chuỗi và tất cả lớp trình bao bọc là ví dụ về các lớp bất biến

Ví dụ về Lớp bất biến

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());
   }
}

Ví dụ về Lớp 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());
   }
}