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

网友投稿 518 2022-11-05


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... ignorePropertBatvEDfvaies) {

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;

}

}

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


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:MFC-消息映射机制
下一篇:LibTorch之优化器
相关文章

 发表评论

暂时没有评论,来抢沙发吧~