org.hamcrest

## Class DiagnosingMatcher<T>

- java.lang.Object
- - org.hamcrest.BaseMatcher<T>
  - - org.hamcrest.DiagnosingMatcher<T>

- Type Parameters:
    `T` -
  All Implemented Interfaces:
    Matcher<T>, SelfDescribing
  Direct Known Subclasses:
    AllOf, IsInstanceOf

      public abstract class DiagnosingMatcher<T>
      extends BaseMatcher<T>

  TODO(ngd): Document.

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `DiagnosingMatcher()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `describeMismatch(Object item, Description mismatchDescription)` Generate a description of why the matcher has not accepted the item.
    `boolean` | `matches(Object item)` Evaluates the matcher for argument item.
    `protected abstract boolean` | `matches(Object item, Description mismatchDescription)`

    - ### Methods inherited from class org.hamcrest.BaseMatcher

      `_dont_implement_Matcher___instead_extend_BaseMatcher_, toString`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

    - ### Methods inherited from interface org.hamcrest.SelfDescribing

      `describeTo`

- - ### Constructor Detail

    - #### DiagnosingMatcher

          public DiagnosingMatcher()

  - ### Method Detail

    - #### matches

          public final boolean matches(Object item)

      Description copied from interface: `Matcher`
      Evaluates the matcher for argument item.

      This method matches against Object, instead of the generic type T. This is because the caller of the Matcher does not know at runtime what the type is (because of type erasure with Java generics). It is down to the implementations to check the correct type.
      Parameters:
        `item` - the object against which the matcher is evaluated.
      Returns:
        `true` if item matches, otherwise `false`.
      See Also:
        `BaseMatcher`

    - #### describeMismatch

          public final void describeMismatch(Object item,
                              Description mismatchDescription)

      Description copied from interface: `Matcher`
      Generate a description of why the matcher has not accepted the item. The description will be part of a larger description of why a matching failed, so it should be concise. This method assumes that `matches(item)` is false, but will not check this.
      Specified by:
        `describeMismatch` in interface `Matcher<T>`
      Overrides:
        `describeMismatch` in class `BaseMatcher<T>`
      Parameters:
        `item` - The item that the Matcher has rejected.
        `mismatchDescription` - The description to be built or appended to.

    - #### matches

          protected abstract boolean matches(Object item,
                        Description mismatchDescription)