2013-06-11 2 views
2

В одном из наших проектов, я наткнулся на следующую строку кода (он использует Hamcrest matchers 1.3):Синтаксис Hamcrest matchers

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

Два вопроса:

  1. ли кто-нибудь пожалуйста объяснить это синтаксис для меня? Я никогда не видел использования < и> в этом контексте.

  2. Eclipse выделяет последнюю часть этой строки как en error: The method notNullValue() of type Matchers is not generic; it cannot be parameterized with arguments <SomeException>. Однако, используя maven на командной строке, проект строится без проблем. Так почему же возникает ошибка?

ответ

3
  1. Это правильный синтаксис для указания общего параметра при вызове статического метода. Если у вас есть следующий метод ...

    общественный T myMethod();

Вы можете назвать это как MyClass.<String>myMethod(). Во многих случаях вывод типа позволяет не включать <>. Например, работа для вышеуказанного: String myVal = MyClass.myMethod().

  1. документация Javadoc для Matchers не имеет следующую подпись для notNullValue

    общественного статического Matcher notNullValue()

Обратите внимание, что это не общая переменная <T> поэтому не является правильным, чтобы указать один , Если он компилируется, я предполагаю, что это происходит потому, что компилятор игнорирует его.

 Смежные вопросы

  • Нет связанных вопросов^_^