Package org.apache.commons.lang3.builder

## Class ReflectionDiffBuilder<T>

- java.lang.Object
- - org.apache.commons.lang3.builder.ReflectionDiffBuilder<T>

Type Parameters:
  `T` - type of the left and right object to diff.

All Implemented Interfaces:
  `Builder<DiffResult<T>>`

    public class ReflectionDiffBuilder<T>
    extends java.lang.Object
    implements Builder<DiffResult<T>>

Assists in implementing `Diffable.diff(Object)` methods.

All non-static, non-transient fields (including inherited fields) of the objects to diff are discovered using reflection and compared for differences.

To use this class, write code as follows:

     public class Person implements Diffable<Person> {
       String name;
       int age;
       boolean smoker;
       ...

       public DiffResult diff(Person obj) {
         // No need for null check, as NullPointerException correct if obj is null
         return new ReflectionDiffBuilder(this, obj, ToStringStyle.SHORT_PREFIX_STYLE)
           .build();
       }
     }

The `ToStringStyle` passed to the constructor is embedded in the returned `DiffResult` and influences the style of the `DiffResult.toString()` method. This style choice can be overridden by calling `DiffResult.toString(ToStringStyle)`.

Since:
  3.6
See Also:
  `Diffable`, `Diff`, `DiffResult`, `ToStringStyle`

### Constructor Summary

Constructors
`ReflectionDiffBuilder​(T lhs, T rhs, ToStringStyle style)` Constructs a builder for the specified objects with the specified style.

### Method Summary

All Methods Instance Methods Concrete Methods
`DiffResult<T>` `build()` Returns a reference to the object being constructed or result being calculated by the builder.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### ReflectionDiffBuilder

    public ReflectionDiffBuilder​(T lhs,
                                 T rhs,
                                 ToStringStyle style)

Constructs a builder for the specified objects with the specified style.

If `lhs == rhs` or `lhs.equals(rhs)` then the builder will not evaluate any calls to `append(...)` and will return an empty `DiffResult` when `build()` is executed.

Parameters:
  `lhs` - `this` object
  `rhs` - the object to diff against
  `style` - the style will use when outputting the objects, `null` uses the default
Throws:
  `java.lang.IllegalArgumentException` - if `lhs` or `rhs` is `null`

### Method Detail

#### build

    public DiffResult<T> build()

Description copied from interface: `Builder`
Returns a reference to the object being constructed or result being calculated by the builder.

Specified by:
  `build` in interface `Builder<T>`
Returns:
  the object constructed or result calculated by the builder.