Java / Lombok Interview questions
How do you exclude a field from @EqualsAndHashCode?
@EqualsAndHashCode.Exclude on a field removes it from both the equality comparison and the
hash code calculation, while every other (non-excluded) field is still used as normal.
@EqualsAndHashCode public class Session { private String userId; @EqualsAndHashCode.Exclude private long lastAccessedAt; // shouldn't affect whether two Session objects are "equal" }
This matters for fields that are naturally variable or derived rather than part of the object's actual
identity — a "last accessed" timestamp, a cached computed value, or a mutable collection whose changing
contents shouldn't flip an object's equality (and, more subtly, whose contents changing after being placed in
a HashSet could break that set's internal invariants if it were included in the hash code).
More Related questions...