Можно ли проверить полученные поля пустыми или пустыми без

1

Я получаю список полей. Около 60 полей.

Из этого я должен проверить 50 полей, которые являются нулевыми или пустыми, если нет, то мне придется добавить их также в таблицу DB.

Сейчас я делаю это вручную, используя условие. Я просто собираюсь сделать это, еще не реализовано.

Есть ли лучший вариант, чем это?

Мой код:

if(ValidateData.checkIsNullOrEmpty(command.getSubscriptionStartYear())){

}
if(ValidateData.checkIsNullOrEmpty(command.getSubscriptionPeriod())){

}
if(ValidateData.checkIsNullOrEmpty(command.getExpectedArrivalTimeOfIssues())){

}
.....
.....

if(ValidateData.checkIsNullOrEmpty(command.getMaxNoOfClaims())){

}

Здесь command - это класс, который получает данные из источника.

Здесь ValidateData - это class:

Это определение метода:

public static boolean checkIsNullOrEmpty(Integer arg){
    if(arg != null) return true;
    return false;
}

public static boolean checkIsNullOrEmpty(String arg){
     if(!arg.trim().equals("") || !arg.trim().equals(" ") || arg.trim() != null) return true;
     return false;
}

Если кто-нибудь подскажет мне или предложит мне, что есть лучший вариант?

  • 0
    Было бы полезно увидеть код класса command
  • 0
    Как насчет использования отражения, чтобы вызвать все get *** и затем вызвать ваши методы проверки? Также, если вы можете попробовать использовать Apache StringUtils.isEmpty и / или StringUtils.isBlank
Показать ещё 2 комментария
Теги:
if-statement
null

3 ответа

1

создайте такую функцию:

public static bool AllNull(object... something)
{
    for(var v :something)
       if(v!=null){
         if(v instanceof Integer)
           // do integer validation
       }else
         //Err msg
}

Тогда вы можете назвать это так:

if (AllNull(obj1, obj2, obj3, obj4, obj5, obj6))
{
    // ...
}

если вы хотите быть конкретными, выделите строки и целые числа и создайте отдельную функцию, подобную этой, для каждого типа, который вам нужен

редактировать

как я понимаю, из вашего комментария, и не знаю varargs

varargs полезны для любого метода, который должен иметь дело с неопределенным количеством объектов. Хорошим примером является String.format.

  • 0
    но здесь некоторые целочисленные, а некоторые строковые. Так как с этим бороться?
  • 0
    @ user3145373 ツ посмотри мои последние правки. использовать объект, а не целое число / строку
Показать ещё 9 комментариев
0

Я думаю, что лучшим решением для вашей проблемы является использование Java Reflect. Вот пример кода для проверки всего поля экземпляра Java Reflect. Пример. У меня есть один экземпляр (pojo) объекта PojoObj.

PojoObj pojo = new PojoObj("one1", 2, null, 4, "five", "Six");

Подтвердите все поля с помощью Java Reflect.

Class<PojoObj>  aClass = PojoObj.class;
      Field[] fields = aClass.getDeclaredFields();
      for(Field field : fields) {
          Object value = field.get(pojo);
          Object type = field.getType();
          if(value == null) {
              System.out.println(field.getName() + " is null");
          } else {
              System.out.println(field.getName() + " is instanceof " + type + " and value = " + value);
          }
      }

Вывод:

fieldOne is instanceof class java.lang.String and value = one1
fieldTwo is instanceof long and value = 2
fieldThree is null
fieldFour is instanceof int and value = 4
fieldFive is instanceof class java.lang.String and value = five
fieldSix is instanceof class java.lang.String and value = Six
  • 0
    но как установить значение переменной для другой целевой переменной, если она не равна нулю?
0

если вы можете отредактировать команду, вы можете пометить каждое поле, которое вы хотите проверить null, с помощью @NotNull, а затем использовать java-отражение api, чтобы получить все поля, отмеченные с помощью @NotNull, и проверить, являются ли некоторые поля нулевыми или нет

Ещё вопросы

Сообщество Overcoder
Наверх
Меню