不可变类的实际例子

时间:2012-02-08 23:51:42

标签: java immutability

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

4 个答案:

答案 0 :(得分:5)

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

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

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

答案 1 :(得分:3)

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

答案 2 :(得分:2)

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

答案 3 :(得分:0)

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