Package org.apache.commons.lang3.builder

## Interface Diffable<T>

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

Functional Interface:
  This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.

    @FunctionalInterface
    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

All Methods Instance Methods Abstract Methods
`DiffResult<T>` `diff​(T obj)` Retrieves a list of the differences between this object and the supplied object.

### Method Detail

#### diff

    DiffResult<T> 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`