yeg*_*256 6 java generics junit hamcrest
这是代码:
Map<Foo, String> map;
org.hamcrest.MatcherAssert.assertThat(map,
org.hamcrest.Matchers.hasKey(new Foo()));
Run Code Online (Sandbox Code Playgroud)
这就是编译器所说的:
cannot find symbol method assertThat(java.util.Map<Foo,java.lang.String>,
org.hamcrest.Matcher<java.util.Map<Foo,java.lang.Object>>)
Run Code Online (Sandbox Code Playgroud)
为什么,我该怎么办?
Jon*_*eet 15
我怀疑你需要这样的东西:
MatcherAssert.assertThat(map, Matchers.<Foo, String>hasKey());
Run Code Online (Sandbox Code Playgroud)
这样,您可以指定hasKey方法调用的值类型.虽然看起来很丑陋,但我有点惊讶于类型推断并没有帮助你......
听起来你遇到了和我一样的错误.这是在Hamcrest> 1.1?他们将匹配器上的泛型更改为1.1到1.2之间.我在这里提交了一个Hamcrest错误:http://code.google.com/p/hamcrest/issues/detail? id = 143
但事实证明,这实际上是编译器中的一个错误,无法在JDK 6中修复,但已在7中修复:http: //bugs.sun.com/bugdatabase/view_bug.do; jsessionid = 72ce99618021685c3570069c8f60b?bug_id = 7034548
正如乔恩所提到的,有几种方法可以解决它,但它们都打破了Hamcrest漂亮,流畅的界面.
| 归档时间: |
|
| 查看次数: |
2296 次 |
| 最近记录: |