Java 判断对象是否所有属性为空(反射)

前言

在开发Excel数据导入的时候,后台拿到Excel中的数据并接收到List泛型集合中,发现有很多对象的属性全部为null,想通过代码将这些无效的数据给过滤掉,下面是过滤的具体操作。


ObjectUtil工具类

import java.util.*;
import java.lang.reflect.Field;

public class ObjectUtil {
    /**
     * 判断该对象是否所有属性为空
     * 返回ture表示所有属性为null,返回false表示不是所有属性都是null
     */
    public static boolean isAllFieldNull(Object object) {
        boolean flag = true;

        Class clazz = object.getClass();
        Field[] fields = clazz.getDeclaredFields();

        for (Field field : fields) {
            //设置属性是可以访问的(私有的也可以)
            field.setAccessible(true);
            Object value = null;
            try {
                value = field.get(object);
                // 只要有1个属性不为空,那么就不是所有的属性值都为空
                if (value != null) {
                    flag = false;
                    break;
                }
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            }
        }
        return flag;
    }
}

根据对象的字段名取出字段值

    /**
     * 反射根据对象的字段名取出字段值
     * @param object 类对象
     * @param pEntity 字段名
     */
    public static Object getFieldP(Object object, String pEntity){
        Class clazz = object.getClass();
        try {
            Field field =clazz.getDeclaredField(pEntity);
            field.setAccessible(true);
            return field.get(object);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

对象的字段比较多, 有些字段可能为空。例 :


package org.springblade.modules.dataProcess.entity;

import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
 * 实体类
 *
 * @author BladeX
 * @since 2023-01-09
 */
@Data
@TableName("PROV_TO_MILEAGE")
@ApiModel(value = "ProvToMileage对象", description = "ProvToMileage对象")
public class ProvToMileage implements Serializable {

	private static final long serialVersionUID = 1L;

	/**
	* 日期(天)
	*/
		@ApiModelProperty(value = "日期(天)")
		private Date day;
	/**
	* 省份(归属地)
	*/
		@ApiModelProperty(value = "省份(归属地)")
		private BigDecimal accessCode;
	/**
	* 行驶地(未知)
	*/
		@ApiModelProperty(value = "行驶地(未知)")
		private BigDecimal p00;
	/**
	* 行驶地(北京)
	*/
		@ApiModelProperty(value = "行驶地(北京)")
		private BigDecimal p11;
	/**
	* 行驶地(天津)
	*/
		@ApiModelProperty(value = "行驶地(天津)")
		private BigDecimal p12;
	/**
	* 行驶地(河北)
	*/
		@ApiModelProperty(value = "行驶地(河北)")
		private BigDecimal p13;
	/**
	* 行驶地(山西)
	*/
		@ApiModelProperty(value = "行驶地(山西)")
		private BigDecimal p14;
	/**
	* 行驶地(内蒙古)
	*/
		@ApiModelProperty(value = "行驶地(内蒙古)")
		private BigDecimal p15;
	/**
	* 行驶地(辽宁)
	*/
		@ApiModelProperty(value = "行驶地(辽宁)")
		private BigDecimal p21;
	/**
	* 行驶地(吉林)
	*/
		@ApiModelProperty(value = "行驶地(吉林)")
		private BigDecimal p22;
	/**
	* 行驶地(黑龙江)
	*/
		@ApiModelProperty(value = "行驶地(黑龙江)")
		private BigDecimal p23;
	/**
	* 行驶地(上海)
	*/
		@ApiModelProperty(value = "行驶地(上海)")
		private BigDecimal p31;
	/**
	* 行驶地(江苏)
	*/
		@ApiModelProperty(value = "行驶地(江苏)")
		private BigDecimal p32;
	/**
	* 行驶地(浙江)
	*/
		@ApiModelProperty(value = "行驶地(浙江)")
		private BigDecimal p33;
	/**
	* 行驶地(安徽)
	*/
		@ApiModelProperty(value = "行驶地(安徽)")
		private BigDecimal p34;
	/**
	* 行驶地(福建)
	*/
		@ApiModelProperty(value = "行驶地(福建)")
		private BigDecimal p35;
	/**
	* 行驶地(江西)
	*/
		@ApiModelProperty(value = "行驶地(江西)")
		private BigDecimal p36;
	/**
	* 行驶地(山东)
	*/
		@ApiModelProperty(value = "行驶地(山东)")
		private BigDecimal p37;
	/**
	* 行驶地(河南)
	*/
		@ApiModelProperty(value = "行驶地(河南)")
		private BigDecimal p41;
	/**
	* 行驶地(湖北)
	*/
		@ApiModelProperty(value = "行驶地(湖北)")
		private BigDecimal p42;
	/**
	* 行驶地(湖南)
	*/
		@ApiModelProperty(value = "行驶地(湖南)")
		private BigDecimal p43;
	/**
	* 行驶地(广东)
	*/
		@ApiModelProperty(value = "行驶地(广东)")
		private BigDecimal p44;
	/**
	* 行驶地(广西)
	*/
		@ApiModelProperty(value = "行驶地(广西)")
		private BigDecimal p45;
	/**
	* 行驶地(海南)
	*/
		@ApiModelProperty(value = "行驶地(海南)")
		private BigDecimal p46;
	/**
	* 行驶地(重庆)
	*/
		@ApiModelProperty(value = "行驶地(重庆)")
		private BigDecimal p50;
	/**
	* 行驶地(四川)
	*/
		@ApiModelProperty(value = "行驶地(四川)")
		private BigDecimal p51;
	/**
	* 行驶地(贵州)
	*/
		@ApiModelProperty(value = "行驶地(贵州)")
		private BigDecimal p52;
	/**
	* 行驶地(云南)
	*/
		@ApiModelProperty(value = "行驶地(云南)")
		private BigDecimal p53;
	/**
	* 行驶地(西藏)
	*/
		@ApiModelProperty(value = "行驶地(西藏)")
		private BigDecimal p54;
	/**
	* 行驶地(陕西)
	*/
		@ApiModelProperty(value = "行驶地(陕西)")
		private BigDecimal p61;
	/**
	* 行驶地(甘肃)
	*/
		@ApiModelProperty(value = "行驶地(甘肃)")
		private BigDecimal p62;
	/**
	* 行驶地(青海)
	*/
		@ApiModelProperty(value = "行驶地(青海)")
		private BigDecimal p63;
	/**
	* 行驶地(宁夏)
	*/
		@ApiModelProperty(value = "行驶地(宁夏)")
		private BigDecimal p64;
	/**
	* 行驶地(新疆)
	*/
		@ApiModelProperty(value = "行驶地(新疆)")
		private BigDecimal p65;
	/**
	* 行驶地(未知)
	*/
		@ApiModelProperty(value = "行驶地(未知)")
		private BigDecimal p99;


}



总结

如果此篇文章有帮助到您, 希望打大佬们能关注点赞收藏评论支持一波,非常感谢大家!
如果有不对的地方请指正!!!

参考1

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

lfwh

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

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

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

打赏作者

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

抵扣说明:

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

余额充值