Android 判断一个对象属性是否有null的值

场景:在通过Gson或者FastGson解析数据成功后,在使用一个对象的时候,比如在用户中心界面有几个属性,姓名,年龄,个人介绍,当我们在使用其中的一个属性的时候,如果这个属性刚好服务器没有赋值,读取的是一个null,有可能导致应用的崩溃或者是在界面显示一个null,那么此时的你是不是想有没有一种想,通过一种方法来一下子判断出里面的属性有没有一个是null的或者是空的,而不是当发现是null值的时候才会怒气冲冲的找到服务器开发人员,(友谊万岁 笑脸)。

好吧,是时候展示真正的实力了。

public class BeanUtils1 {
    public static String checkFieldValueNull(Object bean) {
        StringBuffer sb=new StringBuffer();
        sb.append("");
        if (bean == null) {
            return sb.toString();
        }
        sb.append(bean.getClass().getName()+"  以下属性为空 ");
        Class<?> cls = bean.getClass();
        Method[] methods = cls.getDeclaredMethods();
        Field[] fields = cls.getDeclaredFields();

        for (Field field : fields) {
            try {
                String fieldGetName = parGetName(field.getName());
                if (!checkGetMet(methods, fieldGetName)) {
                    continue;
                }
                Method fieldGetMet = cls.getMethod(fieldGetName, new Class[]{});
                Object fieldVal = fieldGetMet.invoke(bean, new Object[]{});
                if (fieldVal != null) {
                    if ("".equals(fieldVal)) {
                        sb.append(fieldGetMet.getName().toString()+",");
                    }
                }else{
                    sb.append( fieldGetMet.getName().toString()+",");
                }
            } catch (Exception e) {
                continue;
            }
        }
        return sb.toString();
    }


    /**
     * 拼接某属性的 get方法
     *
     * @param fieldName
     * @return String
     */
    public static String parGetName(String fieldName) {
        if (null == fieldName || "".equals(fieldName)) {
            return null;
        }
        int startIndex = 0;
        if (fieldName.charAt(0) == '_'){
            startIndex = 1;
        }
        return "get"
                + fieldName.substring(startIndex, startIndex + 1).toUpperCase()
                + fieldName.substring(startIndex + 1);
    }

    /**
     * 判断是否存在某属性的 get方法
     *
     * @param methods
     * @param fieldGetMet
     * @return boolean
     */
    public static boolean checkGetMet(Method[] methods, String fieldGetMet) {
        for (Method met : methods) {
            if (fieldGetMet.equals(met.getName())) {
                return true;
            }
        }
        return false;
    }

}
多做总结,提升自我,加油
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序邦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值