可能重复:
可变对象与不可变对象
我了解不可变对象与可变对象之间的优缺点,但是当你来设计它时,你如何决定选择哪一个。
我之所以问这个问题是因为如果它是可变的,您可以通过将对象更改回初始状态来重用该对象,因为它是高效且经济的,所以当您处理多步操作时,您可以重用它并且再次。而当您执行多步操作时,不可变对象的性能会被放大,因为它在每一步都会生成一个新对象。<-就记忆而言
这是示例:
//Mutable
A a = new A();
for(int j = 0 ; j < 1000 ; j++){
a.setP1(j);
//do something
}
//Immutable
for(int j = 0 ; j < 1000 ; j++){
A a = new A(j);
//do something
}
我知道不可变对象是安全的,不需要同步,简单,并且共享内部,但是除了这些之外还有什么特别的原因吗?我们什么时候应该让我们的类成为最终的(不可变的)?