zoukankan      html  css  js  c++  java
  • java反射判断对象空字段

    public class ReflectionUtils {
    
        private final static Logger logger = LoggerFactory.getLogger(ReflectionUtils.class);
    
        /**
         * 检查字段
         */
        public static class CheckFiled{
            /**
             * 检查字段是否为null 或者 ""
             * @param source 需要校验的实体
             * @param excludeFields 不需要校验的属性集合
             * @return
             */
            public static void checkFileNullAble(Object source, String ... excludeFields){
    
                List<String> excludeFieldsList = new ArrayList<>();
                if (excludeFields.length > 0) {
                    excludeFieldsList = Arrays.asList(excludeFields);
                }
    
                try {
                    // 取到obj的class, 并取到所有属性
                    Field[] fs = source.getClass().getDeclaredFields();
                    // 遍历所有属性
                    for (Field f : fs) {
                        isNullField(f,source,excludeFieldsList);
                    }
                } catch (Exception e) {
                    logger.error(e.getMessage(),e);
                }
            }
    
            private static void isNullField(Field f,Object source,List<String> excludeFieldsList) throws Exception {
                // 设置私有属性也是可以访问的
                f.setAccessible(true);
    
                //没有需要排除的属性
                if (excludeFieldsList == null || excludeFieldsList.size() == 0) {
                    Object filedValue = f.get(source);
                    if (filedValue== null || "".equals(filedValue.toString())){
                        throw new Exception("Parameter "+f.getName()+"  is null or empty!");
                    }
                    return;
                }
    
                if(!excludeFieldsList.contains(f.getName())) {
                    if ((f.get(source) == null || "".equals(f.get(source).toString()))){
                        throw new Exception("Parameter "+f.getName()+"  is null or empty!");
                    }
                }
            }
    
        }
    
    }
  • 相关阅读:
    wsl 如何去掉 windows 的环境变量
    wget出现Unable to establish SSL connection
    openssh 升级
    element/JS文件上传和下载excel问题
    mysql操作过程中常见问题汇总
    [VB.NET Tips]线程传递参数四种方法
    主路由拨号_openwrt做旁路由_ipv4端口映射的设置
    Openwrt_Linux_crontab任务_顺序执行脚本
    Armbian_笔记
    Debian10_Centos8_fail2ban
  • 原文地址:https://www.cnblogs.com/zfzf1/p/11320503.html
Copyright © 2011-2022 走看看