Class HashCodeMethod.Appender

  • All Implemented Interfaces:
    ByteCodeAppender
    Enclosing class:
    HashCodeMethod

    protected static class HashCodeMethod.Appender
    extends java.lang.Object
    implements ByteCodeAppender
    A byte code appender to implement a hash code method.
    • Constructor Detail

      • Appender

        protected Appender​(StackManipulation initialValue,
                           int multiplier,
                           java.util.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 be null.
    • Method Detail

      • apply

        public ByteCodeAppender.Size apply​(org.objectweb.asm.MethodVisitor methodVisitor,
                                           Implementation.Context implementationContext,
                                           MethodDescription instrumentedMethod)
        Description copied from interface: ByteCodeAppender
        Applies this byte code appender to a type creation process.
        Specified by:
        apply in interface ByteCodeAppender
        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.