Java 如何使用matchers来收集Hamcrest?

Java 如何使用matchers来收集Hamcrest?,java,generics,junit,matcher,hamcrest,Java,Generics,Junit,Matcher,Hamcrest,输入: 使用MyElement而不使用equals方法的集合 一个org.hamcrest.TypeSafeMatcher实现,它通过某个字段匹配元素 目标是使以下语句可编译: Collection<MyElement> elements = ... Collection<TypeSafeMatchert> matchers = ... assertThat(elements, Matchers.contains(matchers); //<error here

输入:

  • 使用MyElement而不使用equals方法的集合
  • 一个org.hamcrest.TypeSafeMatcher实现,它通过某个字段匹配元素
  • 目标是使以下语句可编译:

    Collection<MyElement> elements = ...
    Collection<TypeSafeMatchert> matchers = ...
    assertThat(elements, Matchers.contains(matchers); //<error here
    
    集合元素=。。。
    集合匹配器=。。。
    
    assertThat(elements,Matchers.contains(Matchers);//对匹配器使用列表而不是集合,或者将其转换为数组

    Hamcrest有以下
    包含的
    方法:

    public static <E> org.hamcrest.Matcher<java.lang.Iterable<? extends E>> contains(org.hamcrest.Matcher<? super E>... itemMatchers)
    
    public static <E> org.hamcrest.Matcher<java.lang.Iterable<? extends E>> contains(E... items)
    
    public static <E> org.hamcrest.Matcher<java.lang.Iterable<? extends E>> contains(org.hamcrest.Matcher<? super E> itemMatcher)
    
    public static <E> org.hamcrest.Matcher<java.lang.Iterable<? extends E>> contains(java.util.List<org.hamcrest.Matcher<? super E>> itemMatchers)
    

    public static org.hamcrest.Matcher您需要定义一个

        List<Matcher<? super MyElement>> matchers = ...;
    

    列出非常接近的可能重复项,但使用use Matcher而不是elements时没有答案。:(请尝试指定类型;如下所示: