Гуава предварительные условия checkNull, checkArgument

Я хочу проверить предварительные условия для базового класса, чтобы я знал, что подтипы всегда будут использовать допустимые аргументы конструктора.

Давайте возьмем в качестве примера конструктор, который:

takes 2 or more parameters takes parameters of different types for one parameter, it performs multiple checks (e.g. String is not null and not empty)

Как лучше всего использовать подход предусловий Гуавы в этом случае?

В фальшивом примере, подобном этому: (это придумано!)

protected AbstractException(String errorMessage, Throwable errorCause) {
  super(errorMessage, errorCause);
  checkNotNull(errorMessage,
      ErrorMessage.MethodArgument.CANNOT_BE_NULL_CHECK, "errorMessage");
  checkArgument(!errorMessage.isEmpty(),
      ErrorMessage.MethodArgument.CANNOT_BE_EMPTY_STRING_CHECK,
      "errorMessage");
  checkNotNull(errorCause, ErrorMessage.MethodArgument.CANNOT_BE_NULL_CHECK,
      "errorCause");
}

Я заканчиваю тем, что звонюsuper перед проверкой аргументов, потому что вызовsuper должна быть первая строка метода и, хотя я мог бы сделатьsuper(checkNoNull(errorMessage))Я не могу сделать то же самое, используяcheckArgument потому что это возвращаетvoid, Таким образом, дилемма:

Where do I put the checks on all arguments? I don't want to create a Builder just for that How do I "group" checks as in a fictitious checkStringNotNullAndNotEmpty() Should I rather think about integration with matchers frameworks? (hamcrest, fest assertions...)

Я использую странно выглядящий ErrorMessage.MethodArgument.CANNOT_BE_NULL_CHECK, потому что по умолчаниюthrow не включает в себя сообщение об ошибке, поэтому со стороны тестирования я не могу распознать это как ошибку проверки аргумента, а не как "любой" NPE?

Я все делаю неправильно?

Ответы на вопрос(1)

Ваш ответ на вопрос