java – 克隆()真的用过吗?在getter / setter中防御性复制怎么
人们几乎都会使用防御性的吸气者/安装者吗?对我来说,99%的时间打算将您在另一个对象中设置的对象作为同一对象引用的副本,并且您打算对它所做的更改也在它所设置的对象中进行.如果你setDate(Date dt)并稍后修改dt,谁在乎呢?除非我想要一些基本的不可变数据bean,它只有原语,也许像Date一样简单,我从不使用它.
就克隆而言,副本的深度或浅度存在问题,因此知道克隆对象时会出现什么样的“危险”.我想我只使用过一次或两次clone(),那就是复制对象的当前状态,因为另一个线程(即访问Session中同一个对象的另一个HTTP请求)可能正在修改它. 编辑 – 我在下面做的评论更多的是问题: 但话说回来,你DID改变日期,所以这是你自己的错,因此整个讨论术语“防守”.如果在中小型开发人员组中,您自己控制的是所有应用程序代码,那么仅仅记录您的类是否足以作为制作对象副本的替代方法?或者这不是必需的,因为你应该总是假设在调用setter / getter时没有被复制的东西? 解决方法
来自Josh Bloch的Effective
Java:
Item 24: Make defensive copies when needed (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |