可变对象和不可变对象之间的区别

javaobject oriented programmingprogramming更新于 2025/11/13 15:40:17

在 Java 中,不可变对象的状态在创建后无法修改,但可以引用其他对象。它们在多线程环境中非常有用,因为多个线程无法更改对象的状态,因此不可变对象是线程安全的。不可变对象非常有助于避免时间耦合,并且始终具有失败原子性。

另一方面,可变对象具有可以更改的字段,不可变对象在创建对象后没有可以更改的字段。

Sr.不。Key可变对象不可变对象
1
Basic
我们可以在创建可变对象后修改其状态
我们不能在创建对象后修改其状态。
2
 线程安全
可变对象不是线程安全的
不可变对象是线程安全的。
3
Final
可变类不是 final
要创建不可变对象,请将类设为 final
4
示例
默认情况下,所有类及其对象本质上都是可变的。
String 和所有包装类都是不可变的示例类

不可变类的示例

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

可变类示例

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

相关文章


有用资源