通过反射判断对象的属性值是否为空

Posted lwdmaib

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过反射判断对象的属性值是否为空相关的知识,希望对你有一定的参考价值。

问题产生场景?

    在项目开发过程中我采用了表单内部嵌套列表的形式提交数据,将表单于列表数据同时提交保存。   有时候管理人的出资人结构我新增了多条  这时候并没有真正的保存到数据库,而是保存在了页面前端临时保存等待真正的提交  我操作删除 这时候删除实现的方式是

function delFundManage(obj){
$(obj).parent().parent().remove();
}

移除了 但是在创建列表的时候

 

技术分享图片

技术分享图片

进行移除第一个

技术分享图片

 

 arr[1]  这里并没有将修改为arr[0] 这里提交到后台后出现  由于下表为1 所以出现了两条数据  这条空数据不应该存在所以需要判断当前对象属性值是否全部为空

技术分享图片

 

进入主题 实现判断对象的属性值是否为空  采用反射的思想:

    private boolean checkObjFiledsIsNull(Object obj) {
        boolean flag = false;
        int count = 0;
        Class<?> clazz = obj.getClass();
        Field[] fields = clazz.getDeclaredFields();
        for (Field field:fields) {
            field.setAccessible(true);
            try{
                if(field.get(obj)==null){
                    count++;
                    if(count == fields.length){
                        flag=true;
                    }
                }
            }catch (Exception e){
                logger.error("对象属性检查异常:"+e);
            }
        }
        return flag;
    }

这里设计到了获取属性集合的方式 getFields() 与 getDeclaredFields()两者的区别:

getField() 获取类中public修饰的属性

getDeclaredFields()获取的所有不包括继承属性  

当对私有熟悉操作时采用setAccessible(true) 方法进行擦除  我习惯叫暴力破解  

 



以上是关于通过反射判断对象的属性值是否为空的主要内容,如果未能解决你的问题,请参考以下文章

java利用反射机制判断对象的属性是否为空

java反射反射实现判断发生了修改操作,判断两个对象是否发生属性值的变更,判断两个List集合内对象的属性值是否发生变更

怎样判断一个javaBean中的所有属性为空

JS 数组对象判断属性值是不是为空?

如何判断一个对象的内容是否为空

利用反射判断bean属性不为空(null和空串)