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

导读:本篇文章讲解 Java 判断对象是否所有属性为空(反射),希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

前言

在开发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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/88141.html

(2)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!