Гуава предварительные условия 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
, Таким образом, дилемма:
checkStringNotNullAndNotEmpty()
Стоит ли думать об интеграции со средами соответствия? (Подголовник, утверждения фестиваля ...)Я использую странно выглядящий ErrorMessage.MethodArgument.CANNOT_BE_NULL_CHECK, потому что по умолчаниюthrow
не содержит сообщения об ошибке, поэтому со стороны тестирования я не могу распознать это как ошибку проверки аргумента, а не как "любой" NPE?
Я все делаю неправильно?