+0

Thanks,
Marius

On Fri, Dec 8, 2017 at 12:12 PM, Thomas Mortagne <[email protected]>
wrote:

> Hi devs,
>
> Most Object#hashCode() are implemented using HashCodeBuilder.
> HashCodeBuilder provide an empty constructor and also allow setting
> "random" numbers.
>
> http://dev.xwiki.org/xwiki/bin/view/Community/JavaCodeStyle#
> HEquals2FHashCodeandToStringimplementations
> does not really say anything about what do do and when currently so I
> would like to have a clear rule about it.
>
> On my side when I don't plan to use different types of objects in a
> hash key I usually simply use the empty HashCodeBuilder constructor.
> The only point of setting different numbers is when you might end up
> comparing different object types (and even in that case you have the
> #equals() safeguard anyway so it's mostly about performances in
> practice).
>
> So here is a proposal: it's OK to use empty HashCodeBuilder constructor
> except:
> * when overwriting the hachCode of a super class you should use
> different numbers than the super class (since there is big chance to
> have that super class used as a hash key)
> * as a best effect in general if you know that you are going to have
> several different types as hash key, try to make sure they use
> different random numbers, your proc will thank you :)
>
> WDYT ?
>
> --
> Thomas Mortagne
>

Reply via email to