Class HashCodeMethod

java.lang.Object
net.bytebuddy.implementation.HashCodeMethod
All Implemented Interfaces:
InstrumentedType.Prepareable, Implementation

@Enhance public class HashCodeMethod extends Object implements Implementation
An implementation of Object.hashCode() that takes a class's declared fields into consideration. A hash code is computed by transforming primitive field types to an int value and by summing those values up starting from a given offset after multiplying any previous value with a multiplier. Reference values are checked against null values unless specified otherwise.
  • Field Details

  • Constructor Details

  • Method Details

    • usingSuperClassOffset

      public static HashCodeMethod usingSuperClassOffset()
      Creates a hash code method implementation that bases the hash code on the instrumented type's super class's hash code value.
      Returns:
      A hash code method implementation that bases the hash code on the instrumented type's super class's hash code value.
    • usingTypeHashOffset

      public static HashCodeMethod usingTypeHashOffset(boolean dynamic)
      Creates a hash code method implementation that bases the hash code on the instrumented type's class constant's hash code..
      Parameters:
      dynamic - true if the type should be resolved from the instance and not be set as the declaring class.
      Returns:
      A hash code method implementation that bases the hash code on the instrumented type's class constant's hash code.
    • usingDefaultOffset

      public static HashCodeMethod usingDefaultOffset()
      Creates a hash code method implementation that bases the hash code on a fixed value.
      Returns:
      A hash code method implementation that bases the hash code on a fixed value.
    • usingOffset

      public static HashCodeMethod usingOffset(int value)
      Creates a hash code method implementation that bases the hash code on a fixed value.
      Parameters:
      value - The fixed value.
      Returns:
      A hash code method implementation that bases the hash code on a fixed value.
    • withIgnoredFields

      public HashCodeMethod withIgnoredFields(ElementMatcher<? super FieldDescription.InDefinedShape> ignored)
      Returns a new version of this hash code method implementation that ignores the specified fields additionally to any previously specified fields.
      Parameters:
      ignored - A matcher to specify any fields that should be ignored.
      Returns:
      A new version of this hash code method implementation that also ignores any fields matched by the provided matcher.
    • withNonNullableFields

      public HashCodeMethod withNonNullableFields(ElementMatcher<? super FieldDescription.InDefinedShape> nonNullable)
      Returns a new version of this hash code 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.
      Parameters:
      nonNullable - A matcher to specify any fields that should not be guarded against null values.
      Returns:
      A new version of this hash code method implementation that also does not apply null value checks to any fields matched by the provided matcher.
    • withIdentityFields

      public HashCodeMethod withIdentityFields(ElementMatcher<? super FieldDescription.InDefinedShape> identity)
      Returns a new version of this hash code method implementation that considers the matched fields by their identity.
      Parameters:
      identity - A matcher to specify any fields that should be considered by their identity.
      Returns:
      A new version of this hash code method implementation that also considers the matched fields by their identity.
    • withMultiplier

      public Implementation withMultiplier(int multiplier)
      Returns a new version of this hash code method implementation that uses the given multiplier onto any given hash code before adding a field's hash code.
      Parameters:
      multiplier - The multiplier to use for any hash code before adding any field's hash code.
      Returns:
      A new version of this hash code method implementation that uses the given multiplier onto any given hash code before adding a field's hash code.
    • prepare

      public InstrumentedType prepare(InstrumentedType instrumentedType)
      Prepares a given instrumented type.
      Specified by:
      prepare in interface InstrumentedType.Prepareable
      Parameters:
      instrumentedType - The instrumented type in its current form.
      Returns:
      The prepared instrumented type.
    • appender

      public ByteCodeAppender appender(Implementation.Target implementationTarget)
      Creates a byte code appender that determines the implementation of the instrumented type's methods.
      Specified by:
      appender in interface Implementation
      Parameters:
      implementationTarget - The target of the current implementation.
      Returns:
      A byte code appender for implementing methods delegated to this implementation. This byte code appender is also responsible for handling methods that were added by this implementation on the call to InstrumentedType.Prepareable.prepare(InstrumentedType).