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

    Modifier and Type
    Method
    Description
    diff(T obj)
    Retrieves a list of the differences between this object and the supplied object.
  • Method Details

    • 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:
      NullPointerException - if the specified object is null