是否可以检查接收的字段是空的还是空的,如果没有

时间:2014-11-27 09:37:19

标签: java if-statement null

我收到了字段列表。近60个字段。

由此我必须检查50个空或空的字段,如果没有,那么我还必须在数据库表中添加它们。

现在我正在使用if条件手动完成。我只是想这样做,还没有实现。

还有更好的选择吗?

我的代码:

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

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

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

}
.....
.....

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

}

此处command是从源接收数据的类。

此处ValidateDataclass

它的方法定义:

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;
}

如果有人指导我或建议我有更好的选择吗?

3 个答案:

答案 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