其他分享
首页 > 其他分享> > Mutable和Immutable

Mutable和Immutable

作者:互联网


mutable意为可变的,mutable的变量或对象在创建后其值/引用可以被改变。如一个List在创建后可以添加、删除或修改其中的内容。由于在修改时直接对引用的内容进行修改,相对immutable的变量更有效率。
immutable意为不可变的,immutable的数据类型一旦被创建,其值就不会被修改,如果是引用类型,它的引用也不会被修改。所有的基本数据类型都是immutable的。如果想要修改,一般的方法是将修改后的数据新建出来并重新赋值,故在修改变量时会需要更多的空间。对于引用类型,其引用不能被修改,但被引用对象可以被修改。
如果一个对象被final修饰,则它一旦被赋值后就不能被修改。这是让一个引用变得immutable的方法之一。同时,final类无法派生子类,final方法无法被子类重写。
对于多个引用同时指向一个mutable变量的情况,一旦对其进行修改,那么所有指向它的引用的值全部会被修改。使用过多的mutable变量会导致程序很容易出现难以察觉的问题。但对于不会涉及到共享的局部变量,可以是mutable的,因为mutable的变量在改动时更有效率,而这样使用变量一般也是安全的。
在写一个方法时,不要返回一个mutable的类中属性。一方面,这会导致表示暴露,另一方面,这么做会使客户端绕开mutator方法从而对属性进行任意的修改,很容易破坏表示不变量。最好通过防御式拷贝,创建一个新的对象来返回。

标签:变量,final,immutable,修改,引用,mutable,Mutable,Immutable
来源: https://www.cnblogs.com/j1190202212/p/14979769.html