当前位置: 首页 > 知识库问答 >
问题:

如何在Java7中获得要编译的contains(listitemMatchers)?

翟迪
2023-03-14
assertThat(Arrays.asList("foo", "bar"), 
           contains(Arrays.asList(equalTo("foo"), equalTo("bar"))));

我知道Java8为静态方法添加了新的隐式类型特性,我认为这可能与此有关。我试图重构参数并将它们强制转换为预期的参数,但结果是相同的错误:

List<String> actual = Arrays.asList("foo", "bar");
List<Matcher<String>> expected = Arrays.asList(equalTo("foo"), 
                                               equalTo("bar"));
assertThat(actual, contains(expected));

调用static matcher >包含(Java.util.list >itemMatchers) java.lang.iterable<的正确方法是什么?在java7中扩展e>

共有1个答案

寿和通
2023-03-14

在Hamcrest Javadoc中,contains()的方法签名是:

 public static <E> Matcher<Iterable<? extends E>> contains(List<Matcher<? super E>> itemMatchers);

上面签名中需要注意的重要一点是列表 > 。Java7不能推断列表 > 来自列表 contains()还被重载,因此Java7目标方法的签名是:

public static <E> Matcher<Iterable<? extends E>> contains(E... items);

这就是为什么你会得到神秘的编译错误消息!

List<String> actual = Arrays.asList("foo", "bar");
List<Matcher<? super String>> expected = Arrays.<Matcher<? super String>>asList(equalTo("foo"), 
                                                                                equalTo("bar"));
assertThat(actual, contains(expected));
 类似资料:
  • 我的pom文件列表 但是,在时,我得到 当我运行时,我看到实际上我使用的是Java6 它可以在哪里定义?我有源(d)my.zshrc多次。

  • Java7编译器是如何处理多捕获块的?一个简单的实现是生成字节码,就好像存在多个catch块一样。然而,我从多个来源得到的信息表明,情况并非如此--处理多个异常类型的catch块在编译期间不会产生重复的字节码。 那么,它是如何工作的呢?是否有一个新的字节码指令告诉JVM关于多捕获块?

  • 我有Java8SDK和运行时,以及一个只使用Java7个功能的项目。我想知道我是否可以设置intellij来构建一个Java-7级的jar,从命令行肯定可以做到这一点? 到目前为止,我已经尝试过简单地将项目语言级别设置为7作为实验,但这显然是不够的,也不是我真正需要的。 我在SO上也看到过这个问题:"Intellij IDEA使用java7编译器编译,当我已经将其配置为使用Java6",但我的项目

  • 问题内容: 我发现这篇较旧的文章“ 如何在Java中监视计算机的 Cpu内存和磁盘使用情况”,并想问一下Java 7中是否有新内容。我想获取当前的CPU- ,我的应用程序的RAM,netzwork和netzwork的使用情况。它必须适用于linux(mac)和Windows。数据不能太详细,三个值就足够了(cpu:10%,Ram 4%,Network 40%)。如果数据仅用于应用程序而不是整个操作

  • [ERROR]$home/workspace/javaExamplePbServiceCall/src/main/java/example/ServiceCallPiqi.java:[13,23]ERROR:';‘预期 手工编译产生100个错误,这里是第一个: javac-cp$home/.m2/repository/com/google/protobuf/protobuf-java/2.4.1/

  • 我一定是个反Maven的人,因为每次我尝试使用它时,我都会花很多时间挣扎,然后就放弃了。我的最新情况是,我不能编译Java7源代码,尽管有1.7的JDK。 以下是的输出。有趣的是,当我使用Maven 3.0.4时,错误消息是而不是使用Maven 3.2.1的 正如您所看到的,我使用的是Maven的最新版本,Maven使用的是Java1.7。 我认为脚本正在添加,因为我的环境变量没有指定它。 我正在