TypeSafeMatcher (Hamcrest 2.1 API)
Date: 2018-12-21

org.hamcrest

## Class TypeSafeMatcher<T>

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

- All Implemented Interfaces:
    Matcher<T>, SelfDescribing
  Direct Known Subclasses:
    ArrayAsIterableMatcher, BigDecimalCloseTo, CustomTypeSafeMatcher, HasItemInArray, HasProperty, IsArray, IsArrayContainingInAnyOrder, IsArrayContainingInOrder, IsBlankString, IsCloseTo, IsCompatibleType, IsEmptyCollection, IsEmptyIterable, IsEmptyString, IsEqualCompressingWhiteSpace, IsEqualIgnoringCase, IsMapContaining, IsNaN, MatchesPattern, StringContainsInOrder, SubstringMatcher

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

  Convenient base class for Matchers that require a non-null value of a specific type. This simply implements the null check, checks the type and then casts.

- - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `protected` | `TypeSafeMatcher()` The default constructor for simple sub types
    `protected` | `TypeSafeMatcher(java.lang.Class<?> expectedType)` Use this constructor if the subclass that implements `matchesSafely` is not the class that binds <T> to a type.
    `protected` | `TypeSafeMatcher(ReflectiveTypeFinder typeFinder)` Use this constructor if the subclass that implements `matchesSafely` is not the class that binds <T> to a type.

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `describeMismatch(java.lang.Object item, Description description)` Generate a description of why the matcher has not accepted the item.
    `protected void` | `describeMismatchSafely(T item, Description mismatchDescription)` Subclasses should override this.
    `boolean` | `matches(java.lang.Object item)` Methods made final to prevent accidental override.
    `protected abstract boolean` | `matchesSafely(T item)` Subclasses should implement this.

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

      `_dont_implement_Matcher___instead_extend_BaseMatcher_, isNotNull, 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

    - #### TypeSafeMatcher

          protected TypeSafeMatcher()

      The default constructor for simple sub types

    - #### TypeSafeMatcher

          protected TypeSafeMatcher(java.lang.Class<?> expectedType)

      Use this constructor if the subclass that implements `matchesSafely` is not the class that binds <T> to a type.
      Parameters:
        `expectedType` - The expectedType of the actual value.

    - #### TypeSafeMatcher

          protected TypeSafeMatcher(ReflectiveTypeFinder typeFinder)

      Use this constructor if the subclass that implements `matchesSafely` is not the class that binds <T> to a type.
      Parameters:
        `typeFinder` - A type finder to extract the type

  - ### Method Detail

    - #### matchesSafely

          protected abstract boolean matchesSafely(T item)

      Subclasses should implement this. The item will already have been checked for the specific type and will never be null.

    - #### describeMismatchSafely

          protected void describeMismatchSafely(T item,
                                                Description mismatchDescription)

      Subclasses should override this. The item will already have been checked for the specific type and will never be null.

    - #### matches

          public final boolean matches(java.lang.Object item)

      Methods made final to prevent accidental override. If you need to override this, there's no point on extending TypeSafeMatcher. Instead, extend the `BaseMatcher`.
      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(java.lang.Object item,
                                             Description description)

      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.
        `description` - The description to be built or appended to.