栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java判断list不为空的实现,和限制条数不要在一起写

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java判断list不为空的实现,和限制条数不要在一起写

场景

很多情况下,查单条记录也用通用查询接口,但是输入的条件却能确定唯一性。如果我们要确定list中只有一条记录,如下写法:

// 记录不为空 && 只有一条 才继续
if(!CollectionUtils.isEmpty(list) && 1!=list.size()){
  return "记录条数不是1";
}
Object object = list.get(0);

上面代码对么,貌似正确啊。后来报错了,被打脸了。

其实相当于 >0 && !=1 恰好漏掉了 =0 这种情况,

因此get(0)完美报错。

解决方案

像这种条件不要怕麻烦,多写几个if更清晰。

补充:判断一个java对象中的属性值是否为空(批量判断)

有时候数据库中的某些字段值要求不为空,所以代码中要判断这些字段对应的属性值是否为空,当对象属性过多时,一个一个属性去判断,会显得代码冗余,所以,可以借助工具类

import org.apache.commons.lang.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.FatalBeanException;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class IsNull {
  //整个类都校验
  public static List validateProperty(Object validateObj) {
    return validateProperty(validateObj,(String[])null);
  }
  //类中的某些字段不校验
  public static List validateProperty(Object validateObj,String... ignoreProperties) {
    PropertyDescriptor[] targetPds = BeanUtils.getPropertyDescriptors(validateObj.getClass());
    List ignoreList = (ignoreProperties != null ? Arrays.asList(ignoreProperties) : null);
    List errList = new ArrayList<>();
    for (PropertyDescriptor targetPd : targetPds) {
      Method readMethod = targetPd.getReadMethod();
      if (readMethod != null && (ignoreList == null || !ignoreList.contains(targetPd.getName()))) {
 try {
   if (!Modifier.isPublic(readMethod.getDeclaringClass().getModifiers())) {
     readMethod.setAccessible(true);
   }
   Object value = readMethod.invoke(validateObj);
   if (value instanceof String) {
     if (StringUtils.isEmpty((String) value)) {
errList.add(validateObj.getClass().getSimpleName()+ "中的" + targetPd.getName() + "不能为空");
continue;
     }
   }
   if (value instanceof Float || value instanceof Integer) {
     if (StringUtils.isEmpty(value.toString())) {
errList.add(validateObj.getClass().getSimpleName()+ "中的" + targetPd.getName() + "不能为空");
continue;
     }
   }
   if (value == null) {
     errList.add(validateObj.getClass().getSimpleName() + "中的" + targetPd.getName() + "不能为空");
   }
 } catch (Throwable ex) {
   throw new FatalBeanException(
"Could not copy property '" + targetPd.getName() + "' from source to target", ex);
 }
      }
    }
    return errList;
  }
}

之后对拿到的数据进行业务判断

以上为个人经验,希望能给大家一个参考,也希望大家多多支持考高分网。如有错误或未考虑完全的地方,望不吝赐教。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/129280.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号