Я получаю список полей. Около 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;
}
Если кто-нибудь подскажет мне или предложит мне, что есть лучший вариант?
создайте такую функцию:
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.
Я думаю, что лучшим решением для вашей проблемы является использование 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
если вы можете отредактировать команду, вы можете пометить каждое поле, которое вы хотите проверить null, с помощью @NotNull, а затем использовать java-отражение api, чтобы получить все поля, отмеченные с помощью @NotNull, и проверить, являются ли некоторые поля нулевыми или нет
command