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

org.hamcrest

## Class FeatureMatcher<T,U>

- java.lang.Object
- - org.hamcrest.BaseMatcher<T>
  - - org.hamcrest.TypeSafeDiagnosingMatcher<T>
    - - org.hamcrest.FeatureMatcher<T,U>

- Type Parameters:
    `T` - The type of the object to be matched
    `U` - The type of the feature to be matched
  All Implemented Interfaces:
    Matcher<T>, SelfDescribing
  Direct Known Subclasses:
    CharSequenceLength, HasToString, IsArrayWithSize, IsCollectionWithSize, IsIterableWithSize, IsMapWithSize

      public abstract class FeatureMatcher<T,U>
      extends TypeSafeDiagnosingMatcher<T>

  Supporting class for matching a feature of an object. Implement `featureValueOf()` in a subclass to pull out the feature to be matched against.

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `FeatureMatcher(Matcher<? super U> subMatcher, java.lang.String featureDescription, java.lang.String featureName)` Constructor

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `describeTo(Description description)` Generates a description of the object.
    `protected abstract U` | `featureValueOf(T actual)` Implement this to extract the interesting feature.
    `protected boolean` | `matchesSafely(T actual, Description mismatch)` Subclasses should implement this.

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

      `describeMismatch, matches`

    - ### 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`

- - ### Constructor Detail

    - #### FeatureMatcher

          public FeatureMatcher(Matcher<? super U> subMatcher,
                                java.lang.String featureDescription,
                                java.lang.String featureName)

      Constructor
      Parameters:
        `subMatcher` - The matcher to apply to the feature
        `featureDescription` - Descriptive text to use in describeTo
        `featureName` - Identifying text for mismatch message

  - ### Method Detail

    - #### featureValueOf

          protected abstract U featureValueOf(T actual)

      Implement this to extract the interesting feature.
      Parameters:
        `actual` - the target object
      Returns:
        the feature to be matched

    - #### matchesSafely

          protected boolean matchesSafely(T actual,
                                          Description mismatch)

      Description copied from class: `TypeSafeDiagnosingMatcher`
      Subclasses should implement this. The item will already have been checked for the specific type and will never be null.
      Specified by:
        `matchesSafely` in class `TypeSafeDiagnosingMatcher<T>`

    - #### describeTo

          public final void describeTo(Description description)

      Description copied from interface: `SelfDescribing`
      Generates a description of the object. The description may be part of a a description of a larger object of which this is just a component, so it should be worded appropriately.
      Parameters:
        `description` - The description to be built or appended to.