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.<Person>builder()
       .setDiffBuilder(DiffBuilder.<Person>builder()
           .setLeft(this)
           .setRight(obj)
           .setStyle(ToStringStyle.SHORT_PREFIX_STYLE)
           .build())
       .setExcludeFieldNames("userName", "password")
       .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:
  • Constructor Details

    • ReflectionDiffBuilder

      @Deprecated public ReflectionDiffBuilder(T left, T right, ToStringStyle style)
      Constructs a builder for the specified objects with the specified style.

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

      Parameters:
      left - this object.
      right - the object to diff against.
      style - the style will use when outputting the objects, null uses the default
      Throws:
      IllegalArgumentException - if left or right is null.
  • Method Details