Bloch的“失败原子性”表示,如果方法抛出异常,则该对象之后仍应可用。通常,对象应与调用该方法之前处于相同状态。
对于不可变对象,您可以简单地从它是不可变的事实中获得收益。没有可以更改对象状态的 *** 作。对象的所有方法都可以创建从原始对象派生的新对象。
例如,
String有一个
substring(int)方法。它不会更改原始字符串中的任何内容-
它会创建一个新对象,其内容是所需原始字符串部分的副本。如果抛出异常,那么您将不会获得新对象-
但原始String从未更改。内部没有
substring()修改原始代码的代码
String,因此它是故障原子的。
可变对象也可以获取失败原子性,但是您必须特别注意它,而在不可变对象中,它仅源于您将其设计为不可变的注意。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)