如何让Java类不可变

 我来答
中是鱼0S
2017-01-01 · 超过215用户采纳过TA的回答
知道小有建树答主
回答量:1273
采纳率:0%
帮助的人:363万
展开全部
不可变类的唯一判断条件是:
“ 不可变类的实例在实例的整个生命周期中永远保持初始化的状态”

比如一个类里面有个属性是private List list,然后只提供了getList()方法,但是你还是可以通过getList().add(XXX)来修改list的内容。即是,它没有保持“初始化”状态,它是个可变类。

来自百度:

可变类和不可变类(Mutable and Immutable Objects)的初步定义:
可变类:当你获得这个类的一个实例引用时,你可以改变这个实例的内容。
不可变类:当你获得这个类的一个实例引用时,你不可以改变这个实例的内容。不可变类的实例一但创建,其内在成员变量的值就不能被修改。
如何创建一个自己的不可变类:
.所有成员都是private
.不提供对成员的改变方法,例如:setXXXX
.确保所有的方法不会被重载。手段有两种:使用final Class(强不可变类),或者将所有类方法加上final(弱不可变类)。
.如果某一个类成员不是原始变量(primitive)或者不可变类,必须通过在成员初始化(in)或者get方法(out)时通过深度clone方法,来确保类的不可变。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式