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

2022-08-31 09:49:47

任何人都可以通过示例给出可变对象和不可变对象之间的差异。


答案 1

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

一个非常简单的不可变对象是一个没有任何字段的对象。(例如,一个简单的比较器实现)。

class Mutable{
  private int value;

  public Mutable(int value) {
     this.value = value;
  }

  //getter and setter for value
}

class Immutable {
  private final int value;

  public Immutable(int value) {
     this.value = value;
  }

  //only getter
}

答案 2

可变对象可以在构造后更改其字段。不可变对象不能。

public class MutableClass {

 private int value;

 public MutableClass(int aValue) {
  value = aValue;
 }

 public void setValue(int aValue) {
  value = aValue;
 }

 public getValue() {
  return value;
 }

}

public class ImmutableClass {

 private final int value;
 // changed the constructor to say Immutable instead of mutable
 public ImmutableClass (final int aValue) {
  //The value is set. Now, and forever.
  value = aValue;
 }

 public final getValue() {
  return value;
 }

}