我收到了字段列表。近60个字段。
由此我必须检查50个空或空的字段,如果没有,那么我还必须在数据库表中添加它们。
现在我正在使用if条件手动完成。我只是想这样做,还没有实现。
还有更好的选择吗?
我的代码:
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 :(得分: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。
答案 1 :(得分:0)
如果你可以编辑命令,你可以使用@NotNull标记要检查null的每个字段,然后使用java reflect api获取所有标记为@NotNull的字段,并检查某些字段是否为空
答案 2 :(得分:0)
我认为您的问题的最佳解决方案是使用Java Reflect。 以下是通过Java Reflect验证实例的所有字段的示例代码。 示例我有一个对象PojoObj的实例(pojo)。
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