Package net.bytebuddy.implementation
Class HashCodeMethod.Appender
java.lang.Object
net.bytebuddy.implementation.HashCodeMethod.Appender
- All Implemented Interfaces:
ByteCodeAppender
- Enclosing class:
HashCodeMethod
A byte code appender to implement a hash code method.
-
Nested Class Summary
Nested classes/interfaces inherited from interface net.bytebuddy.implementation.bytecode.ByteCodeAppender
ByteCodeAppender.Compound, ByteCodeAppender.Simple, ByteCodeAppender.Size
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final List
<FieldDescription.InDefinedShape> A list of fields to include in the hash code computation.private final StackManipulation
Loads the initial hash code onto the operand stack.private final int
A multiplier for each value before adding a field's hash code value.private final ElementMatcher
<? super FieldDescription.InDefinedShape> A matcher to determine fields of a reference type that cannot benull
. -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotected
Appender
(StackManipulation initialValue, int multiplier, List<FieldDescription.InDefinedShape> fieldDescriptions, ElementMatcher<? super FieldDescription.InDefinedShape> nonNullable) Creates a new appender for implementing a hash code method. -
Method Summary
Modifier and TypeMethodDescriptionapply
(org.objectweb.asm.MethodVisitor methodVisitor, Implementation.Context implementationContext, MethodDescription instrumentedMethod) Applies this byte code appender to a type creation process.
-
Field Details
-
initialValue
Loads the initial hash code onto the operand stack. -
multiplier
private final int multiplierA multiplier for each value before adding a field's hash code value. -
fieldDescriptions
A list of fields to include in the hash code computation. -
nonNullable
A matcher to determine fields of a reference type that cannot benull
.
-
-
Constructor Details
-
Appender
protected Appender(StackManipulation initialValue, int multiplier, List<FieldDescription.InDefinedShape> fieldDescriptions, ElementMatcher<? super FieldDescription.InDefinedShape> nonNullable) Creates a new appender for implementing a hash code method.- Parameters:
initialValue
- Loads the initial hash code onto the operand stack.multiplier
- A multiplier for each value before adding a field's hash code value.fieldDescriptions
- A list of fields to include in the hash code computation.nonNullable
- A matcher to determine fields of a reference type that cannot benull
.
-
-
Method Details
-
apply
public ByteCodeAppender.Size apply(org.objectweb.asm.MethodVisitor methodVisitor, Implementation.Context implementationContext, MethodDescription instrumentedMethod) Applies this byte code appender to a type creation process.- Specified by:
apply
in interfaceByteCodeAppender
- Parameters:
methodVisitor
- The method visitor to which the byte code appender writes its code to.implementationContext
- The implementation context of the current type creation process.instrumentedMethod
- The method that is the target of the instrumentation.- Returns:
- The required size for the applied byte code to run.
-