不可变类的实际例子

显而易见,不变性增加了可重用性,因为它在每个状态变化中创建了新对象。有人告诉我一个我们需要不可变类的实际场景吗?

考虑java.lang.String 。 如果它不是一成不变的,那么每当你有一个字符串,你想要自信不会在你的下面改变,你必须创建一个副本。

另一个例子是集合:很高兴能够接受或返回一个真正不可变的集合(例如来自Guava – 不仅仅是一个可变集合的不可变视图),并且相信它不会被改变。

我不知道这些是否是“需要”,但我不想在没有它们的情况下发展。

一个很好的例子与哈希有关。 类重写了equals()hashCode()方法,以便它可以在HashSet和(作为键入)HashMap等数据结构中使用,并且哈希代码通常由某些标识成员属性派生。 但是,如果要更改这些属性,那么对象的哈希代码也会更改,因此该对象不再可用于散列数据结构中。

Java提供了一个很好的例子: String

本文有一个很好的颜色示例(因为颜色定义不会改变)。 http://www.ibm.com/developerworks/java/library/j-jtp02183/index.html