gpt4 book ai didi

java.util.Date 克隆或复制以不暴露内部引用

转载 作者:IT老高 更新时间:2023-10-28 13:53:14 28 4
gpt4 key购买 nike

最好不要暴露对象(实体)的内部引用。因此,如果一个对象有一个 java.util.Date 类型的字段,那么例如该字段的 getter 应该返回的不是原始日期而是它的副本。

但是对于 java.util.Date 有两种常见的方法来创建该副本:

  • 克隆:(Date) originalDate.clone()
  • 通过构造函数复制new Date(originalDate.getTime())

我的问题是,哪种方式更好,为什么?

最佳答案

如果它肯定只是一个 Date,那么无论哪种方式都不会有任何区别。

如果实际对象可能是 Date子类(例如 java.sql.Date),那么我希望 clone() 将保留额外信息(包括它是哪个类),而调用构造函数则不会。

顺便说一句,如果您使用了 Joda Time你不会有这个问题,因为有很多不可变的类型可供使用。它也是一个更好的 API :)

关于java.util.Date 克隆或复制以不暴露内部引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7082553/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com