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 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)`.

  See `DiffBuilder` for a non-reflection based version of this class.

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

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `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
    Modifier and Type | Method and Description
    --- | ---
    `DiffResult<T>` | `build()` Returns a reference to the object being constructed or result being calculated by the builder.
    `String[]` | `getExcludeFieldNames()` Gets the field names that should be excluded from the diff.
    `ReflectionDiffBuilder<T>` | `setExcludeFieldNames(String... excludeFieldNamesParam)` Sets the field names to exclude.

    - ### 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:
        `IllegalArgumentException` - if `lhs` or `rhs` is `null`

  - ### Method Detail

    - #### getExcludeFieldNames

          public String[] getExcludeFieldNames()

      Gets the field names that should be excluded from the diff.
      Returns:
        Returns the excludeFieldNames.
      Since:
        3.13.0

    - #### setExcludeFieldNames

          public ReflectionDiffBuilder<T> setExcludeFieldNames(String... excludeFieldNamesParam)

      Sets the field names to exclude.
      Parameters:
        `excludeFieldNamesParam` - The field names to exclude from the diff or `null`.
      Returns:
        `this`
      Since:
        3.13.0

    - #### 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<DiffResult<T>>`
      Returns:
        the object constructed or result calculated by the builder.

Copyright © 2001–2023 The Apache Software Foundation. All rights reserved.