Diffable
Date: 2017-02-08

org.apache.commons.lang3.builder

## Interface Diffable<T>

- Type Parameters:
    `T` - the type of objects that this object may be differentiated against

      public interface Diffable<T>

  `Diffable` classes can be compared with other objects for differences. The `DiffResult` object retrieved can be queried for a list of differences or printed using the `DiffResult.toString()`.

  The calculation of the differences is consistent with equals if and only if `d1.equals(d2)` implies `d1.diff(d2) == ""`. It is strongly recommended that implementations are consistent with equals to avoid confusion. Note that `null` is not an instance of any class and `d1.diff(null)` should throw a `NullPointerException`.

  `Diffable` classes lend themselves well to unit testing, in which a easily readable description of the differences between an anticipated result and an actual result can be retrieved. For example:

       Assert.assertEquals(expected.diff(result), expected, result);

  Since:
    3.3

- - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `DiffResult` | `diff(T obj)` Retrieves a list of the differences between this object and the supplied object.

- - ### Method Detail

    - #### diff

          DiffResult diff(T obj)

      Retrieves a list of the differences between this object and the supplied object.

      Parameters:
        `obj` - the object to diff against, can be `null`
      Returns:
        a list of differences
      Throws:
        `java.lang.NullPointerException` - if the specified object is `null`