@HashCodeAndEqualsPlugin.Enhance public class EqualsMethod extends Object implements Implementation
Object.equals(Object)
that takes a class's declared fields into consideration. Equality is resolved by comparing two
instances of the same or a compatible class field by field where reference fields must either both be null
or where the field value of
the instance upon which the method is invoked returns true
upon calling the value's equals
method. For arrays, the corresponding
utilities of Arrays
are used.Modifier and Type | Class and Description |
---|---|
protected static class |
EqualsMethod.Appender
A byte code appender to implement the
EqualsMethod . |
protected static class |
EqualsMethod.ConditionalReturn
A conditional return aborts the equality computation if a given condition was reached.
|
protected static interface |
EqualsMethod.NullValueGuard
Guards a field value against a potential
null value. |
protected static class |
EqualsMethod.SuperClassCheck
Checks the equality contract against the super class.
|
protected static class |
EqualsMethod.TypeCompatibilityCheck
Checks the overall type of the provided argument.
|
protected static class |
EqualsMethod.ValueComparator
A value comparator is responsible to compare to values of a given type.
|
Implementation.Composable, Implementation.Compound, Implementation.Context, Implementation.Simple, Implementation.SpecialMethodInvocation, Implementation.Target
Modifier | Constructor and Description |
---|---|
protected |
EqualsMethod(EqualsMethod.SuperClassCheck superClassCheck)
Creates a new equals method implementation.
|
Modifier and Type | Method and Description |
---|---|
ByteCodeAppender |
appender(Implementation.Target implementationTarget)
Creates a byte code appender that determines the implementation of the instrumented type's methods.
|
static EqualsMethod |
isolated()
Creates an equals method implementation that does not invoke the super class's
Object.equals(Object) method. |
InstrumentedType |
prepare(InstrumentedType instrumentedType)
Prepares a given instrumented type.
|
static EqualsMethod |
requiringSuperClassEquality()
Creates an equals implementation that invokes the super class's
Object.equals(Object) method first. |
EqualsMethod |
withIgnoredFields(ElementMatcher<? super FieldDescription.InDefinedShape> ignored)
Returns a new version of this equals method implementation that ignores the specified fields additionally to any
previously specified fields.
|
EqualsMethod |
withNonNullableFields(ElementMatcher<? super FieldDescription.InDefinedShape> nonNullable)
Returns a new version of this equals method implementation that does not apply a
null value check for the specified fields
if they have a reference type additionally to any previously specified fields. |
Implementation |
withSubclassEquality()
Returns a new version of this equals method implementation that permits subclasses of the instrumented type to be equal to instances
of the instrumented type instead of requiring an exact match.
|
protected EqualsMethod(EqualsMethod.SuperClassCheck superClassCheck)
superClassCheck
- The baseline equality to check.public static EqualsMethod requiringSuperClassEquality()
Object.equals(Object)
method first.Object.equals(Object)
method first.public static EqualsMethod isolated()
Object.equals(Object)
method.Object.equals(Object)
method.public EqualsMethod withIgnoredFields(ElementMatcher<? super FieldDescription.InDefinedShape> ignored)
ignored
- A matcher to specify any fields that should be ignored.public EqualsMethod withNonNullableFields(ElementMatcher<? super FieldDescription.InDefinedShape> nonNullable)
null
value check for the specified fields
if they have a reference type additionally to any previously specified fields.nonNullable
- A matcher to specify any fields that should not be guarded against null
values.null
value checks to any fields matched by
the provided matcher.public Implementation withSubclassEquality()
public InstrumentedType prepare(InstrumentedType instrumentedType)
InstrumentedType.Prepareable
prepare
in interface InstrumentedType.Prepareable
instrumentedType
- The instrumented type in its current form.public ByteCodeAppender appender(Implementation.Target implementationTarget)
Implementation
appender
in interface Implementation
implementationTarget
- The target of the current implementation.InstrumentedType.Prepareable.prepare(InstrumentedType)
.Copyright © 2014–2018. All rights reserved.