为什么不应该对LocalDateTime的实例使用身份敏感操作(==,身份哈希码或同步)

时间:2017-03-14 00:30:23

标签: java time equals

我目前正在研究java.time API,我在Java LocalDateTime Documentation上遇到了以下短语

  

这是一个基于价值的课程;使用身份敏感操作   (包括引用相等(==),标识哈希码或   同步)对LocalDateTime的实例可能具有不可预测性   结果,应该避免。应该使用equals方法   比较。

所以,我只是想知道为什么不建议在LocalDateTime的实例上使用身份敏感操作(包括引用相等(==),身份哈希码或同步)?

1 个答案:

答案 0 :(得分:1)

在javadoc上,“基于价值”的链接指向this page,更详细地解释了它的含义。

其余的基本上说你不应该对实例身份做任何假设。例如,调用两次的LocalDate.of(y, m, d)可能会返回相同的实例。

这可能与Java 10有关,它将引入value objects