今天写项目的时候,有个地方是这样的
首先是new了一个list
List<Bean> list= new ArrayList<Bean>();
然后通过一个循环往list 里面 add bean
for( XXXXXXXX) {
Bean bean= new Bean();
if( XXXX){
bean.setX(X);
}
if(XXX) {
bean.setXX(XX);
}
........
然后往里面添加Bean
list.add(bean);
}
这个时候要用到 list .size() ,
按常理是,for 循环里面的 if 如果 都不成立,这时候 list 会放入一个 new 出来的bean ,而这个bean里的值都是空的,但是也在size 占了 1 个大小 ,
我想要的效果是 : 如果 if 里都不成立,我不想往list 里 加入一个值都是空的bean ,
所以我要做的是,在放入list之前判断这个bean 里的属性是不是都为空,
一开始自己写了一个遍历对象里的属性,一个个get出来判断。写完之后,发现属性越多,写的代码很多,而且不通用,自己看到都感觉十分难受。
然后,找了一个别人写的,试了一下完全可以,不仅通用还简洁 ,发出来给像我这样的小白用。
public static boolean isAllFieldNull(Object obj) throws Exception{// 得到类对象
Class beanClass = obj.getClass();
//得到属性集合
Field[] fs = beanClass.getDeclaredFields();
//遍历属性
for (Field f : fs) {
// 设置属性是可以访问的(私有的也可以)
f.setAccessible(true);
// 得到此属性的值
Object val = f.get(obj);
//只要有1个属性不为空,那么就不是所有的属性值都为空
if(val!=null && !"".equals(val) ) {
return false;
}
}
return true;
}
如果返回true ,说明bean 里的值全是null ,加个判断就不需要放list 里 add 了 。