判断对象中的所有字段属性是否都为null或空字符串

该代码片段展示了如何通过Java反射机制检查对象的所有字段属性是否为空或空字符串。对于非基本数据类型,直接比较是否为空;对于基本数据类型,则转换为对应的包装类型进行非零值判断。
摘要由CSDN通过智能技术生成

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

1 如果对象中没有基本数据类型的话,用这种方式就可以

    //判断对象值是否为空
    public static boolean isAllFieldsNull(Object obj) {
        for (Field f : obj.getClass().getDeclaredFields()) {
            f.setAccessible(true);
            try {
                if (f.get(obj) != null && !"".equals(f.get(obj).toString().trim())) {
                    return false;
                }
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            }
        }
        return true;
    }

2 如果有基本类型的话,就需要判断基本类型才行

    /**
     * 判断对象中的所有字段属性是否都为null或空字符串
     *
     * @param obj 待判断的对象
     * @return 如果所有字段属性都为null或空字符串,则返回true;否则返回false
     */
    public static boolean isObjectFieldsEmpty(Object obj) {
        Field[] fields = obj.getClass().getDeclaredFields(); // 获取类中的所有字段属性
        try {
            for (Field field : fields) {
                field.setAccessible(true); // 设置可访问私有属性

                if (field.get(obj) == null) { // 判断字段值是否为null
                    continue;
                }

                if (field.getType().isPrimitive()) { // 判断字段类型是否为基本数据类型
                    // 如果是基本数据类型,先将其转换成对应的包装类型再进行判断
                    if (field.getType().equals(boolean.class)) {
                        if (!Boolean.valueOf(field.getBoolean(obj))) {
                            return false;
                        }
                    } else if (field.getType().equals(byte.class)) {
                        if (!(Byte.valueOf(field.getByte(obj)) != 0)) {
                            return false;
                        }
                    } else if (field.getType().equals(short.class)) {
                        if (!(Short.valueOf(field.getShort(obj)) != 0)) {
                            return false;
                        }
                    } else if (field.getType().equals(int.class)) {
                        if (!(Integer.valueOf(field.getInt(obj)) != 0)) {
                            return false;
                        }
                    } else if (field.getType().equals(long.class)) {
                        if (!(Long.valueOf(field.getLong(obj)) != 0L)) {
                            return false;
                        }
                    } else if (field.getType().equals(float.class)) {
                        if (!(Float.valueOf(field.getFloat(obj)) != 0.0f)) {
                            return false;
                        }
                    } else if (field.getType().equals(double.class)) {
                        if (!(Double.valueOf(field.getDouble(obj)) != 0.0d)) {
                            return false;
                        }
                    } else if (field.getType().equals(char.class)) {
                        if (!(Character.valueOf(field.getChar(obj)) != '\u0000')) {
                            return false;
                        }
                    }
                } else { // 非基本数据类型,判断其是否为空字符串
                    if (!"".equals(field.get(obj).toString().trim())) {
                        return false;
                    }
                }
            }
        } catch (IllegalAccessException e) {
            System.err.println("访问权限异常:" + e.getMessage());
            return false;
        }
        return true;
    }
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值