# Package org.apache.commons.lang3.builder

Assists in creating consistent `equals(Object)`, `toString()`, `hashCode()`, and `compareTo(Object)` methods. These classes are not thread-safe.

When you write a `hashCode()`, do you check Bloch's Effective Java? No? You just hack in a quick number? Well `HashCodeBuilder` will save your day. It, and its buddies (`EqualsBuilder`, `CompareToBuilder`, `ToStringBuilder`), take care of the nasty bits while you focus on the important bits, like which fields will go into making up the hashcode.

Since:
  1.0
See Also:
  `Object.equals(Object)`, `Object.toString()`, `Object.hashCode()`, `Comparable.compareTo(Object)`

Interface Summary
Builder<T>: The Builder interface is designed to designate a class as a builder object in the Builder design pattern.
Diffable<T>: `Diffable` classes can be compared with other objects for differences.

Class Summary
CompareToBuilder: Assists in implementing `Comparable.compareTo(Object)` methods.
Diff<T>: A `Diff` contains the differences between two `Diffable` class fields.
DiffBuilder<T>: Assists in implementing `Diffable.diff(Object)` methods.
DiffResult<T>: A `DiffResult` contains a collection of the differences between two `Diffable` objects.
EqualsBuilder: Assists in implementing `Object.equals(Object)` methods.
HashCodeBuilder: Assists in implementing `Object.hashCode()` methods.
MultilineRecursiveToStringStyle: Works with `ToStringBuilder` to create a "deep" `toString`.
RecursiveToStringStyle: Works with `ToStringBuilder` to create a "deep" `toString`.
ReflectionDiffBuilder<T>: Assists in implementing `Diffable.diff(Object)` methods.
ReflectionToStringBuilder: Assists in implementing `Object.toString()` methods using reflection.
StandardToStringStyle: Works with `ToStringBuilder` to create a `toString`.
ToStringBuilder: Assists in implementing `Object.toString()` methods.
ToStringStyle: Controls `String` formatting for `ToStringBuilder`.

Annotation Types Summary
EqualsExclude: Use this annotation to exclude a field from being used by the various `reflectionEquals` methods defined on `EqualsBuilder`.
HashCodeExclude: Use this annotation to exclude a field from being used by the various `reflectionHashcode` methods defined on `HashCodeBuilder`.
ToStringExclude: Use this annotation to exclude a field from being used by the `ReflectionToStringBuilder`.
ToStringSummary: Use this annotation on the fields to get the summary instead of the detailed information when using `ReflectionToStringBuilder`.