Проверьте, что некоторые члены не являются нулевыми

У меня есть класс с примерно 20 членами, и у меня есть метод для проверки того, что 10 конкретных членов не являются нулевыми. Сначала я подумал, что ни один из них не может быть нулевым, поэтому я делал цикл for this.getClass().getDeclaredFields() но когда я узнал, что 10 из них действительно могут быть нулевыми, этот план провалился.

Я пробовал гуглить, если был способ установить подмножества членов и проходить только по ним, но не нашел ничего полезного. В противном случае я остался с большим if ((id == null) || (type == null) ... return false

Есть идеи сделать это более чистым способом?

1 ответ

Вы можете создать аннотацию для пометки полей, которые не являются нулевыми, а затем просто отфильтровать список полей в соответствии с аннотацией.

public class ValidateNotNullProperty
{
    public static @interface NotNull {}

    // example usage
    @NotNull
    public int id;

    public static List<Field> getMandatoryFields(Class<?> cls) {
        return Arrays.asList(cls.getDeclaredFields()).stream()
        .filter(fld -> fld.isAnnotationPresent(NotNull.class))
        .collect(Collectors.toList());
    }
}
Другие вопросы по тегам