我目前正在研究java.time API,我在Java LocalDateTime Documentation上遇到了以下短语
这是一个基于价值的课程;使用身份敏感操作 (包括引用相等(==),标识哈希码或 同步)对LocalDateTime的实例可能具有不可预测性 结果,应该避免。应该使用equals方法 比较。
所以,我只是想知道为什么不建议在LocalDateTime的实例上使用身份敏感操作(包括引用相等(==),身份哈希码或同步)?
答案 0 :(得分:1)
在javadoc上,“基于价值”的链接指向this page,更详细地解释了它的含义。
其余的基本上说你不应该对实例身份做任何假设。例如,调用两次的LocalDate.of(y, m, d)
可能会返回相同的实例。
这可能与Java 10有关,它将引入value objects。