只看
User对象,为什么平等取决于id 和
nickname?在我看来,这有点反常。我希望您有一个id,那么那就是对象的标识,因此可以在相等条件下使用。
我还看到您有一个用于用户ID的设置器。那么,您真的要更改用户ID吗?我发现您可以更改昵称,这很有意义。但我希望ID保持不变。
还要注意,由于要覆盖equals(),因此还应该覆盖hashCode()。
现在,如果hashCode()和equals()依赖于不可变字段(例如id),则hashCode()的结果将不会改变,如果将User放入哈希集合(例如HashMap)中,则以后再也不会丢失它(这很令人困惑)!
最后(!),我将保护构造函数和设置器免受空昵称(使它们抛出IllegalArgumentExceptions),然后使equals()之类的代码不必担心空昵称(除非’null’代表昵称)。我对id也会这样做,因为您将其作为Long(对象)。但这不是一个原始的时间吗?



