Package lombok

Annotation Type EqualsAndHashCode


  • @Target(TYPE)
    @Retention(SOURCE)
    public @interface EqualsAndHashCode
    Generates implementations for the equals and hashCode methods inherited by all objects, based on relevant fields.

    Complete documentation is found at the project lombok features page for @EqualsAndHashCode.

    • Optional Element Summary

      Optional Elements 
      Modifier and Type Optional Element Description
      boolean callSuper
      Call on the superclass's implementations of equals and hashCode before calculating for the fields in this class.
      boolean doNotUseGetters
      Normally, if getters are available, those are called.
      java.lang.String[] exclude
      Any fields listed here will not be taken into account in the generated equals and hashCode implementations.
      java.lang.String[] of
      If present, explicitly lists the fields that are to be used for identity.
      boolean onlyExplicitlyIncluded
      Only include fields and methods explicitly marked with @EqualsAndHashCode.Include.
      EqualsAndHashCode.AnyAnnotation[] onParam
      Any annotations listed here are put on the generated parameter of equals and canEqual.
    • Element Detail

      • exclude

        java.lang.String[] exclude
        Any fields listed here will not be taken into account in the generated equals and hashCode implementations. Mutually exclusive with of().

        Will soon be marked @Deprecated; use the @EqualsAndHashCode.Exclude annotation instead.

        Returns:
        A list of fields to exclude.
        Default:
        {}
      • of

        java.lang.String[] of
        If present, explicitly lists the fields that are to be used for identity. Normally, all non-static, non-transient fields are used for identity.

        Mutually exclusive with exclude().

        Will soon be marked @Deprecated; use the @EqualsAndHashCode.Include annotation together with @EqualsAndHashCode(onlyExplicitlyIncluded = true).

        Returns:
        A list of fields to use (default: all of them).
        Default:
        {}
      • callSuper

        boolean callSuper
        Call on the superclass's implementations of equals and hashCode before calculating for the fields in this class. default: false
        Returns:
        Whether to call the superclass's equals implementation as part of the generated equals algorithm.
        Default:
        false
      • doNotUseGetters

        boolean doNotUseGetters
        Normally, if getters are available, those are called. To suppress this and let the generated code use the fields directly, set this to true. default: false
        Returns:
        If true, always use direct field access instead of calling the getter method.
        Default:
        false
      • onParam

        EqualsAndHashCode.AnyAnnotation[] onParam
        Any annotations listed here are put on the generated parameter of equals and canEqual. This is useful to add for example a Nullable annotation.
        The syntax for this feature depends on JDK version (nothing we can do about that; it's to work around javac bugs).
        up to JDK7:
        @EqualsAndHashCode(onParam=@__({@AnnotationsGoHere}))
        from JDK8:
        @EqualsAndHashCode(onParam_={@AnnotationsGohere}) // note the underscore after onParam.
        Returns:
        List of annotations to apply to the generated parameter in the equals() method.
        Default:
        {}
      • onlyExplicitlyIncluded

        boolean onlyExplicitlyIncluded
        Only include fields and methods explicitly marked with @EqualsAndHashCode.Include. Normally, all (non-static, non-transient) fields are included by default.
        Returns:
        If true, don't include non-static non-transient fields automatically (default: false).
        Default:
        false