JAVA 封装一个工具类,将实例的里面的空值设为对应的默认值

news2024/9/23 7:31:56

JAVA  封装一个工具类,将实例的里面的空值设为对应的默认值,比喻字符串类型就设为默认 "", Integer就设为0  

示例代码:

    protected static void setDefaults(Object obj) {
        Class<?> clazz = obj.getClass();
        Field[] fields = clazz.getDeclaredFields();

        for (Field field : fields) {
            field.setAccessible(true); // 允许访问私有字段
            try {
                Object fieldValue = field.get(obj);
                if (fieldValue == null) {
                    System.out.println(field.getType()+"-"+field.getType().isPrimitive());
                    if (field.getType().isPrimitive() || field.getType() == String.class) {
                        // 对于基本类型和String,直接设置默认值
                        setDefaultValue(field, obj);

                    } else if (field.getType() == Integer.class || field.getType() == Integer.TYPE) {
                        // 对于Integer类型,设置默认值0
                        field.set(obj, 0);
                    } else if (field.getType() == Double.class || field.getType() == Double.TYPE) {
                        field.set(obj, 0.0);
                    } else if (field.getType() == Long.class || field.getType() == Long.TYPE) {
                        field.set(obj, 0L);
                    } else {
                        // 对于其他类型,不做处理
                        continue;
                    }
                }
            } catch (IllegalAccessException e) {
                throw new RuntimeException("Failed to access field: " + field.getName(), e);
            }
        }
    }

    private void setDefaultValue(Field field, Object obj) throws IllegalAccessException {
        if (field.getType() == boolean.class || field.getType() == Boolean.class) {
            field.setBoolean(obj, false);
        } else if (field.getType() == byte.class || field.getType() == Byte.class) {
            field.setByte(obj, (byte) 0);
        } else if (field.getType() == char.class || field.getType() == Character.class) {
            field.setChar(obj, '\u0000');
        } else if (field.getType() == short.class || field.getType() == Short.class) {
            field.setShort(obj, (short) 0);
        } else if (field.getType() == int.class || field.getType() == Integer.class) {
            field.setInt(obj, 0);
        } else if (field.getType() == long.class || field.getType() == Long.class) {
            field.setLong(obj, 0L);
        } else if (field.getType() == float.class || field.getType() == Float.class) {
            field.setFloat(obj, 0.0f);
        } else if (field.getType() == double.class || field.getType() == Double.class){
            field.setDouble(obj, 0.0);
        }

    }

使用:

    public static void main(String[] args) {
        CZKInfoDTO dto=new CZKInfoDTO();
        setDefaults(dto);
        System.out.println(JSON.toJSONString(dto));
    }

运行结果:

而使用设置得到的结果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1996808.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何在FreeRtos工程中添加驱动调用

前言&#xff1a;本篇笔记学习的是韦东山老师的教程&#xff0c;连接放在最后。 上篇教程图文讲解了&#xff0c;如何使用STM32CubleMX&#xff0c;进行移植FreeRtos工程&#xff0c;如果没有使用这个软件则需要自己去手动进行移植操作&#xff0c;本篇图文教程是添加驱动&…

LeetCode.3132.找出与数组相加的整数II

题目描述&#xff1a; 给你两个整数数组 nums1 和 nums2。 从 nums1 中移除两个元素&#xff0c;并且所有其他元素都与变量 x 所表示的整数相加。如果 x 为负数&#xff0c;则表现为元素值的减少。 执行上述操作后&#xff0c;nums1 和 nums2 相等 。当两个数组中包含相同…

【探索数据结构与算法】使用单链表实现队列

目录 一. 队列的定义 二.队列的结构定义 单个元素的结构定义 队列的结构定义 三.队列的接口实现 1.初始化 2.销毁 3.入队列&#xff08;队尾插入&#xff09; 4.出队列&#xff08;队头删除&#xff09; 5.获取队首元素 6.获取队尾元素 7.获取队列元素个数 …

力扣刷题-环形链表II

&#x1f308;个人主页&#xff1a;羽晨同学 &#x1f4ab;个人格言:“成为自己未来的主人~” 我们先来看一下这道题的代码部分&#xff1a; /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/ struct ListN…

element table表格树形数据展示

element table表格树形数据展示 1、效果 2、代码 <el-table ref"pointMultipleTable" border class"table-box" :data"[damActiveObj]"row-key"id" :tree-props"{ children: children }" :expand-row-keys"expand…

Qt+TSC打印机调试

前言 最近被TSC打印机整的死去活来&#xff0c;记录一下使用方法。 一、环境 Qt5.15.2 mingw tsc TE244 二、使用步骤 1.引入库 从官网下载windows C SDK&#xff0c;引入库&#xff0c;以下是.pro文件 QT core gui printsupportgreaterThan(QT_MAJOR_VERSION, 4)…

HAProxy七层负载均衡配置方案

HAProxy 一、准备二、配置HAProxy服务器1. 下载HAProxy2. 编写配置文件3. 启动HAProxy服务 三、配置后端服务①配置web服务器②配置php服务器 四、测试 一、准备 准备5台CentOS7服务器&#xff0c;IP地址如下&#xff1a; HAProxy 192.168.152.71web1 192.168.152.72web2 192.…

3D摄影棚布光软件:Set A Light 3D Studio for Mac 激活版

Set A Light 3D Studio 是一款专业的照明模拟软件&#xff0c;专为摄影师和电影制作人设计&#xff0c;用于规划和设计照片拍摄的照明效果。 以下是关于这款软件的一些主要特点和功能&#xff1a; 虚拟照明工作室&#xff1a;Set A Light 3D Studio 提供了一个虚拟的照明工作室…

CentOS7.6 HAproxy-7层负载均衡集群——实施方案

目录 1、前期环境准备 1.准备4台主机 1. 设置主机名 2. 设置IP地址然后重启网卡 3. 关闭防火墙和selinux 4. 全部的服务器完成时间统一 二、配置haproxy(192.168.200.11)服务器 1. 安装haproxy 2. haproxy 配置中分成五部分内容 3. 配置HAproxy&#xff08;192.168.2…

大家不推荐开放式耳机?开放式耳机的优缺点

你问到了一个挺有意思的问题&#xff1a;为什么大家在推荐耳机时&#xff0c;往往不太提那些在抖音上卖得火热的开放式耳机呢&#xff1f; 首先&#xff0c;咱得明白&#xff0c;抖音上的热门产品&#xff0c;很多时候是因为它们抓住了短视频的“爆款”特性——要么是颜值爆表&…

代码随想录算法训练营第十八天| 530.二叉搜索树的最小绝对差 ● 501.二叉搜索树中的众数 ● 236. 二叉树的最近公共祖先

题目&#xff1a; 530. 二叉搜索树的最小绝对差 给你一个二叉搜索树的根节点 root &#xff0c;返回 树中任意两不同节点值之间的最小差值 。 差值是一个正数&#xff0c;其数值等于两值之差的绝对值。 示例 1&#xff1a; 输入&#xff1a;root [4,2,6,1,3] 输出&#xff1a;…

共谱绿色物流新篇章!批量苏州金龙氢燃料牵引车交付张家港

2024年8月8日上午阳光明媚&#xff0c;一场别开生面的交车仪式在苏州金龙厂区内举行。张家港运昌绿色物流有限公司&#xff08;以下简称“张家港运昌物流”&#xff09;采购的40台苏州金龙氢燃料牵引车正式交付。江苏华昌&#xff08;集团&#xff09;有限公司纪委书记陈饶忠&a…

Robot Operating System——深度解析通过符号和隐式加载动态库的运行模式

大纲 运行时分析依赖文件分析汇编和符号分析 除了《Robot Operating System——深度解析自动隐式加载动态库的运行模式》中介绍的这种最终在底层依赖了RCLCPP_COMPONENTS_REGISTER_NODE来注册Node工厂类对象之外&#xff0c;还存在一种特殊的方式&#xff0c;即本文介绍的&…

仿RabbiteMq简易消息队列基础篇(gtest的使用)

TOC gtest介绍 gtest是google的一个开源框架&#xff0c;它主要用于写单元测试&#xff0c;检查自己的程序是否符合预期行为。可在多个平台上使用&#xff08;包含Linux&#xff0c;MAC OC&#xff0c;Windows等&#xff09;。它提供了丰富的断言&#xff0c;致命和非致命失败…

Spring框架的三种配置方式(二)---xml文件+注解

Spring框架有三种配置方式&#xff1a; 1.在spring2.5以前&#xff0c;用xml文件进行配置 2.在spring2.5以后&#xff0c;用xml文件和注解(annotation)共同进行配置 3.在spring3.0以后&#xff0c;用注解(annotation)和JavaConfig配置类进行配置 一、xml文件 见下一篇 二…

联通数科如何基于Apache DolphinScheduler构建DataOps一体化能力平台

各位小伙伴晚上好&#xff0c;我是联通数字科技有限公司数据智能事业部的王兴杰。 今天&#xff0c;我将和大家聊一聊联通数字科技有限公司是如何基于Apache DolphinScheduler构建DataOps一体化能力平台的。 今天的分享主要分为三个部分&#xff1a; 关于DataOps的一些思考&a…

视觉SLAM第五讲

本讲将讨论“机器人如何观测外部世界”&#xff0c;也就是观测方程部分。而在以相机为主的视觉SLAM中&#xff0c;观测主要是指相机成像的过程。 三维世界中的一个物体反射或发出的光线&#xff0c;穿过相机光心后&#xff0c;投影在相机的成像平面上。相机的感光器件接收到光…

主机加固是什么?主机加固与产线工控安全关系

1. 需求背景 随着工业4.0的发展&#xff0c;生产线日益智能化&#xff0c;生产网已经发展成一个复杂的计算机环境。尽管这些网络通常进行了物理隔离&#xff0c;但在实际操作中仍需要与外部进行数据交互。这种交互可能导致病毒和恶意软件的入侵&#xff0c;威胁工控主机和产线…

k8s分布式存储-ceph

文章目录 Cephdeploy-ceph部署1.系统环境初始化1.1 修改主机名&#xff0c;DNS解析1.2 时间同步1.3 配置apt基础源与ceph源1.4关闭selinux与防火墙1.5 **创建** ceph **集群部署用户** cephadmin1.6分发密钥 2. ceph部署2.1 **安装** ceph 部署工具2.2 **初始化** mon **节点**…

计算机毕业设计选题推荐-小型民营加油站管理系统-Java/Python项目实战

✨作者主页&#xff1a;IT研究室✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…