zoukankan      html  css  js  c++  java
  • 通过反射判断对象的属性值是否为空

    问题产生场景?

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

    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) 方法进行擦除  我习惯叫暴力破解  

  • 相关阅读:
    Android5.0录屏方案
    Android点阵屏效果的控件
    Android绘制View相关的几个问题
    AndroidStudio导入第三方开源库
    第六百二十三天 how can I坚持
    第六百二十二天 how can I 坚持
    第六百二十一天 how can I 坚持
    第六百二十天 how can I 坚持
    第六百一十九天 how can I 坚持
    第六百一十八天 how can I 坚持
  • 原文地址:https://www.cnblogs.com/lwdmaib/p/9851647.html
Copyright © 2011-2022 走看看