Есть ли в java 8+ хорошая проверка полей, которая может заменить предварительные условия для guava?

Третий матч в google для «C ++ slicing» дает мне эту статью в Википедии http://en.wikipedia.org/wiki/Object_slicing и этот (нагретый, но первые несколько сообщений определяют проблему ): http://bytes.com/forum/thread163565.html

Таким образом, это когда вы назначаете объект подкласса суперклассу. Суперкласс ничего не знает о дополнительной информации в подклассе и не имеет места для его хранения, поэтому дополнительная информация получает «отрезанный».

Если эти ссылки не дают достаточной информации для «хороший ответ», пожалуйста, отредактируйте свой вопрос, чтобы сообщить нам, что еще вы ищете.

3
задан Doe Johnson 24 March 2019 в 17:28
поделиться

3 ответа

Java 8+ (до 12) не имеет такого подхода (возможно, в будущем появятся некоторые изменения).

  • Со стороны чистой Java вы можете использовать assert :

    assert <condition> : <message>
    

В случае неудачи подтверждения выбрасывается AssertionError с <message>.

Однако, вы должны быть уверены, что это активируется добавлением атрибута -ea в JVM .
Утверждения добавляют более значимую информацию для неудачных дел.

  • В качестве альтернативы вы можете использовать apache-commons-lang Validate class:

    Validate.notNull(i, "this parameter can't be null")
    Validate.isTrue(i > 0, "The value must be greater than zero: %d", i);
    
0
ответ дан nazar_art 24 March 2019 в 17:28
поделиться

Я думаю, вы можете использовать Apache Commons Lang для этого. У них есть много методов проверки в Validate class . Я не уверен, достаточно ли он выразителен, но если вам нужно что-то еще, то можно просто написать это для себя, кода для простых проверок не должно быть много.

Кроме того, если вы когда-нибудь захотите интегрировать эти проверки в свой основной код бизнес-логики (а не только в модульные тесты), вам следует взглянуть на Bean Validation . Таким образом, вы определенно не изобретаете колесо, и ваши тесты будут ожидать только исключения из среды валидации.

Ура.

0
ответ дан Nestor Sokil 24 March 2019 в 17:28
поделиться

Я использую валидацию пружин, но иногда я пишу валидации, расширяя валидацию пружин для управления некоторым пользовательским поведением

0
ответ дан Deng 24 March 2019 в 17:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: