Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java hamcrest匹配器的语法_Java_Eclipse_Generics_Junit_Hamcrest - Fatal编程技术网

Java hamcrest匹配器的语法

Java hamcrest匹配器的语法,java,eclipse,generics,junit,hamcrest,Java,Eclipse,Generics,Junit,Hamcrest,在我们的一个项目中,我偶然发现了以下代码行(它使用hamcrest matchers 1.3): assertThat(someReport.getSomeException(),Matchers.notNullValue()) 两个问题: 谁能给我解释一下这个语法吗?我从未见过在这种情况下的用法 Eclipse将该行的后半部分突出显示为en error:类型匹配器的notNullValue()方法不是泛型的;无法使用参数对其进行参数化。但是,在命令行上使用maven,项目构建不会出现问题。那

在我们的一个项目中,我偶然发现了以下代码行(它使用hamcrest matchers 1.3):

assertThat(someReport.getSomeException(),Matchers.notNullValue())
两个问题:

  • 谁能给我解释一下这个语法吗?我从未见过在这种情况下的用法

  • Eclipse将该行的后半部分突出显示为en error:
    类型匹配器的notNullValue()方法不是泛型的;无法使用参数对其进行参数化
    。但是,在命令行上使用maven,项目构建不会出现问题。那么为什么会有错误呢

  • 这是在调用静态方法时指定泛型参数的正确语法。如果你有以下方法

    公共T myMethod()

  • 您可以将其称为
    MyClass.myMethod()
    。在许多情况下,类型推断允许不包括
    。例如,上面的工作:
    String myVal=MyClass.myMethod()

  • Matchers
    的javadoc具有
    notNullValue

    公共静态匹配器notNullValue()

  • 请注意,不是泛型变量
    ,因此不适合指定泛型变量。如果它正在编译,我认为这是因为编译器忽略了它

    assertThat(someReport.getSomeException(), Matchers.<SomeException>notNullValue())