diff --git a/src/core/lombok/eclipse/handlers/HandleEqualsAndHashCode.java b/src/core/lombok/eclipse/handlers/HandleEqualsAndHashCode.java index d906d85d..adcb8e6a 100644 --- a/src/core/lombok/eclipse/handlers/HandleEqualsAndHashCode.java +++ b/src/core/lombok/eclipse/handlers/HandleEqualsAndHashCode.java @@ -536,7 +536,7 @@ public class HandleEqualsAndHashCode implements EclipseAnnotationHandler exprNil = List.nil(); + JCExpression thisRef = maker.Ident(thisName); + JCExpression castThisRef = maker.TypeCast(chainDots(maker, typeNode, "java", "lang", "Object"), thisRef); JCExpression equalityCheck = maker.Apply(exprNil, maker.Select(maker.Ident(otherName), typeNode.toName("canEqual")), - List.of(maker.Ident(thisName))); + List.of(castThisRef)); statements.append(maker.If(maker.Unary(Javac.getCTCint(JCTree.class, "NOT"), equalityCheck), returnBool(maker, false), null)); } } @@ -434,9 +436,11 @@ public class HandleEqualsAndHashCode implements JavacAnnotationHandlernil(), maker.Select(createFieldAccessor(maker, fieldNode, fieldAccess), typeNode.toName("equals")), - List.of(createFieldAccessor(maker, fieldNode, fieldAccess, maker.Ident(otherName)))); + List.of(castEqualsArg)); JCExpression fieldsAreNotEqual = maker.Conditional(thisEqualsNull, otherNotEqualsNull, maker.Unary(Javac.getCTCint(JCTree.class, "NOT"), thisEqualsThat)); statements.append(maker.If(fieldsAreNotEqual, returnBool(maker, false), null)); } @@ -451,7 +455,7 @@ public class HandleEqualsAndHashCode implements JavacAnnotationHandler