如何创建不可变对象?

时间:2014-04-11 03:56:47

标签: java

在我的程序中,我想创建一个不可变对象。例如,使arraylist或map不可变。我们知道我们有String I.e是一个不可变对象,同样我想创建自己的不可变对象。

2 个答案:

答案 0 :(得分:1)

不可变只意味着无法更改对象的值。例如,这是一个围绕整数的不可变包装器:

public class ImmutableInt {
  private final int value;

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

  public int getValue() {
    return this.value;
  }
}

答案 1 :(得分:0)

使对象不可变只意味着在实例化之后不能更改任何成员。您可以通过将实例字段标记为private和final来完全控制Java中的此操作。这会强制它们在实例化对象时进行初始化,并防止在该点之后进行任何进一步修改。

如果您正在寻找一种简单的方法来使Java集合“不可变”,请查看java.util.Collections类,它提供了为可变集合提供只读包装的静态方法。 http://docs.oracle.com/javase/7/docs/api/java/util/Collections.html#unmodifiableCollection(java.util.Collection)