Arrays are 'deep' compared/hashCoded, which means that arrays that contain themselves will result in
StackOverflowErrors. However, this behaviour is no different from e.g.
You may safely presume that the hashCode implementation used will not change between versions of lombok, however this guarantee is not set in stone; if there's a significant performance improvement to be gained from using an alternate hash algorithm, that will be substituted in a future version.
For the purposes of equality, 2
NaN (not a number) values for floats and doubles are considered equal, eventhough 'NaN == NaN' would return false. This is analogous to
java.lang.Double's equals method, and is in fact required to ensure that comparing an object to an exact copy of itself returns
true for equality.
If there is any method named either
equals, regardless of return type, no methods will be generated, and a warning is emitted instead. These 2 methods need to be in sync with each other, which lombok cannot guarantee unless it generates all the methods, hence you always get a warning if one or both of the methods already exist. You can mark any method with
@lombok.experimental.Tolerate to hide them from lombok.
Attempting to exclude fields that don't exist or would have been excluded anyway (because they are static or transient) results in warnings on the named fields. You therefore don't have to worry about typos.
of generates a warning; the
exclude parameter will be ignored in that case.
By default, any variables that start with a $ symbol are excluded automatically. You can only include them by using the 'of' parameter.
If a getter exists for a field to be included, it is called instead of using a direct field reference. This behaviour can be suppressed:
@EqualsAndHashCode(doNotUseGetters = true)