Я не совсем уверен, если проблема, которую я имею имеет простое решение, но вот фрагмент кода:Дженерики в Hamcrest Matchers
Map<?,?> m = dbo.toMap();
assertThat(m, Matchers.<Object, Object>hasEntry(is(someKeyValue), is(notNullValue())));
Я должен добавить эти дженерики, чтобы успокоить компилятор, но почему может» это будет проще? Почему мне нужно добавить подстановочный знак в переменную m
? Почему это не может быть, по крайней мере:
assertThat(dbo.toMap(), hasEntry(is((Object)someKeyValue), is(notNullValue())));
Вот simple project. В контрольных линиях блока, что беспокоит меня:
// this one doesn't quite work
DBObject dbo = returnSomeDBObject();
Map m3 = dbo.toMap();
assertThat(m3, hasEntry(is((Object)PSF_KEY), is(notNullValue())));
// but this one does
DBObject dbo2 = returnSomeDBObject();
Map<?,?> m4 = dbo.toMap();
assertThat(m4, Matchers.<Object, Object>hasEntry(is(PSF_KEY), is(notNullValue())));
Фактически должен работать на Java 7 и 8. Покажите нам полный, параметризованный пример и как он сбой (ошибка компиляции и т. Д.) –
Я добавил ссылку на проект и выдержку кода, иллюстрирующую вопрос – EvgeniySharapov