【发布时间】:2015-12-23 11:16:22
【问题描述】:
似乎许多类(例如HashSet)假定对象的hashCode 不会改变。 documentation 明确了equals 和hashCode 之间的关系应该是什么。
但是实现hashCode 会在对象的生命周期内发生变化,这是糟糕的设计吗?
【问题讨论】:
-
在我看来,您的问题背后的真正的问题很简单:您的对象何时应该是不可变的,而据我所知,答案是:只要可行。可变对象总是必要的,但我的理解是,由于可变性会增加复杂性,因此应该尽可能限制它们。