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

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

Позволять'Возьмем в качестве примера конструктор, который:

принимает 2 или более параметровпринимает параметры разных типовдля одного параметра он выполняет несколько проверок (например, строка не равна нулюа также не пустой)

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

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

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, Таким образом, дилемма:

Где я могу поставить чеки на все аргументы? Я нене хочу создавать Builder только для этогоКак я "группа» проверяет как в фиктивномcheckStringNotNullAndNotEmpty()Стоит ли думать об интеграции со средами соответствия? (Подголовник, утверждения фестиваля ...)

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

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

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

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