将对象的null字段赋值为默认值

2023-11-16

import java.lang.reflect.Field;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;

import org.apache.commons.lang.ArrayUtils;


public class BeanHelper {
    /**
     * 将对象的null字段赋值为默认值
     *
     * @param cls
     * @param <T>
     * @return
     */
    public static <T> T noNullStringAttr(T cls) {
        Field[] fields = cls.getClass().getDeclaredFields();
        Field[] parendFields = cls.getClass().getSuperclass().getDeclaredFields();

        if (ArrayUtils.isEmpty(fields) && ArrayUtils.isEmpty(parendFields)) {
            return cls;
        }
        for (Field field : fields) {
            if ("String".equals(field.getType().getSimpleName())) {
                field.setAccessible(true);
                try {
                    Object value = field.get(cls);
                    if (value == null) {
                        field.set(cls, "");
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            if ("Date".equals(field.getType().getSimpleName())) {
                field.setAccessible(true);
                try {
                    Object value = field.get(cls);
                    if (value == null) {
                        field.set(cls, new Date());
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            if ("int".equals(field.getType().getSimpleName())) {
                field.setAccessible(true);
                try {
                    Object value = field.get(cls);
                    if (value == null) {
                        field.set(cls, 0);
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }

            if ("Integer".equals(field.getType().getSimpleName())) {
                field.setAccessible(true);
                try {
                    Object value = field.get(cls);
                    if (value == null) {
                        field.set(cls, 0);
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }

            if ("long".equals(field.getType().getSimpleName())) {
                field.setAccessible(true);
                try {
                    Object value = field.get(cls);
                    if (value == null) {
                        field.set(cls, 0L);
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            if ("Long".equals(field.getType().getSimpleName())) {
                field.setAccessible(true);
                try {
                    Object value = field.get(cls);
                    if (value == null) {
                        field.set(cls, 0L);
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            if ("Float".equals(field.getType().getSimpleName())) {
                field.setAccessible(true);
                try {
                    Object value = field.get(cls);
                    if (value == null) {
                        field.set(cls, Float.parseFloat("0"));
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }

            if ("float".equals(field.getType().getSimpleName())) {
                field.setAccessible(true);
                try {
                    Object value = field.get(cls);
                    if (value == null) {
                        field.set(cls, Float.parseFloat("0"));
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }

            if ("BigDecimal".equals(field.getType().getSimpleName())) {
                field.setAccessible(true);
                try {
                    Object value = field.get(cls);
                    if (value == null) {
                        field.set(cls, BigDecimal.ZERO);
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }

            if ("List".equals(field.getType().getSimpleName())) {
                field.setAccessible(true);
                try {
                    Object value = field.get(cls);
                    if (value == null) {
                        field.set(cls, new ArrayList<>());
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
        for (Field field : parendFields) {
            if ("String".equals(field.getType().getSimpleName())) {
                field.setAccessible(true);
                try {
                    Object value = field.get(cls);
                    if (value == null) {
                        field.set(cls, "");
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            if ("Date".equals(field.getType().getSimpleName())) {
                field.setAccessible(true);
                try {
                    Object value = field.get(cls);
                    if (value == null) {
                        field.set(cls, new Date());
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            if ("int".equals(field.getType().getSimpleName())) {
                field.setAccessible(true);
                try {
                    Object value = field.get(cls);
                    if (value == null) {
                        field.set(cls, 0);
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }

            if ("Integer".equals(field.getType().getSimpleName())) {
                field.setAccessible(true);
                try {
                    Object value = field.get(cls);
                    if (value == null) {
                        field.set(cls, 0);
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }

            if ("long".equals(field.getType().getSimpleName())) {
                field.setAccessible(true);
                try {
                    Object value = field.get(cls);
                    if (value == null) {
                        field.set(cls, 0L);
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            if ("Long".equals(field.getType().getSimpleName())) {
                field.setAccessible(true);
                try {
                    Object value = field.get(cls);
                    if (value == null) {
                        field.set(cls, 0L);
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            if ("Float".equals(field.getType().getSimpleName())) {
                field.setAccessible(true);
                try {
                    Object value = field.get(cls);
                    if (value == null) {
                        field.set(cls, Float.parseFloat("0"));
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            if ("BigDecimal".equals(field.getType().getSimpleName())) {
                field.setAccessible(true);
                try {
                    Object value = field.get(cls);
                    if (value == null) {
                        field.set(cls, BigDecimal.ZERO);
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }

            if ("float".equals(field.getType().getSimpleName())) {
                field.setAccessible(true);
                try {
                    Object value = field.get(cls);
                    if (value == null) {
                        field.set(cls, Float.parseFloat("0"));
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            if ("List".equals(field.getType().getSimpleName())) {
                field.setAccessible(true);
                try {
                    Object value = field.get(cls);
                    if (value == null) {
                        field.set(cls, new ArrayList<>());
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
        return cls;
    }

    /**
     * 将BigDecimal类型的字段转换成万元显示
     *
     * @param cls
     * @param <T>
     * @return
     */
    public static <T> T toWan(T cls) {
        Field[] fields = cls.getClass().getDeclaredFields();

        if (ArrayUtils.isEmpty(fields)) {
            return cls;
        }
        for (Field field : fields) {
            if ("BigDecimal".equals(field.getType().getSimpleName())) {
                field.setAccessible(true);
                try {
                    Object value = field.get(cls);
                    if (value != null) {
                        field.set(cls, StringUtil.getNumberWan((BigDecimal) value));
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }

        }
        return cls;
    }
}


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将对象的null字段赋值为默认值 的相关文章

  • 将处理项目移至 Eclipse

    我已经在处理项目上工作了一段时间 现在想将其移至 Eclipse 中 我已经在 Eclipse 环境中安装了 Proclipse 我有很多扩展名为 pde 的文件 然而 Proclipse 文件都以 java 结尾 所有 pde 文件都存在
  • JAVA 中的 Composer 相当于什么? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我目前从 PHP 转向 java 有没有类似的工具composer https getcomposer org 在 PHP 中用于 JAV
  • Hashset - 创建 Set 后使对象相同

    如果我们在 HashSet 中添加两个不同的对象 可变的 然后通过调用 setter 更改对象的值 使它们相同 则大小仍然是 hashSet 的 2 我无法理解其原因 public static void main String args
  • java 中的梵文 i18n

    我正在尝试使用来自互联网的示例 ttf 文件在 java 中使用 i18n 进行梵文 印地文 我可以加载资源包条目 还可以加载 ttf 并设置字体 但它不会根据需要呈现 jlabel 它显示块代替字符 如果我在 Eclipse 中调试 我可
  • Apache Thrift Java-Javascript 通信

    我正在编写一个基于 Apache Thrift 的 Java 服务器 它将从 Javascript 客户端接收数据 我已经完成了 Java 服务器 但问题是我可以获得 Javascript 客户端的工作示例 我无法找到一个好的示例 构建文档
  • 如何将本机数据库运算符 (postgres ~) 与 JPA 标准生成器一起使用?

    我使用 JPA 2 0 标准构建以下查询 简化 select n from notif n where n message b la 我正在使用 postgresql 数据库 我真的需要 运算符 而不是像 我可以使用与 CriteriaBu
  • H2数据库:如何进行加密保护,而不暴露文件加密密钥

    我们在服务器模式下使用Java H2数据库 因为我们不希望用户访问数据库文件 为了对数据库文件添加更多保护 我们计划使用 AES 加密 将 CIPHER AES 添加到数据库 URL 以防存储被盗 但是 每个用户在连接时还需要提供文件保护密
  • Java Junit 测试 HTTP POST 请求

    我需要测试以下方法而不改变方法本身 该方法向服务器发出 POST 方法 但我需要制作一个独立于服务器的测试用例 在将其重定向到本地文件之前 我测试了类似的方法 但为此我将协议指定为文件 主机名指定为 localhost 端口指定为 1 我的
  • 如何避免Eclipse在将类名放在注释中时导入类,以便checkstyle稍后不会抱怨?

    有时我将类名放在方法或类的注释中只是为了引用 但是 Eclipse 会自动执行导入并在文件中留下导入语句 这会导致稍后出现 未使用的导入 检查样式错误 当我在注释中输入类名时 是否可以更改一些配置以避免 Eclipse 自动导入 人们不同意
  • 使用 Jena 查询维基数据

    目前 Wikidata 有一个 SPARQL 端点 https query wikidata org https query wikidata org 我想使用 Jena 3 0 1 查询此网站 我使用以下代码 但收到错误消息 端点返回的
  • 但是创建静态实用方法不应该被过度使用吗?如何避免呢? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 随着时间的推移 java项目中引入了许多实用方法来完成更复杂和简单的任务 当使用静态方法时 我们在代码中引入了紧密耦合 这使得我们的代
  • 膨胀类 android.support.design.widget.NavigationView 时出错

    我按照 NavigationView 的教程进行操作 但无法解决此错误消息 Error inflating class android support design widget NavigationView 教程链接 https www
  • 避免 @Secured 注释的重复值

    我正在尝试使用以下方法来保护我的服务方法 Secured如下 public interface IUserService Secured ROLE ROLE1 ROLE ROLE2 ResponseEntity saveUser Creat
  • Janusgraph 0.3.2 + HBase 1.4.9 - 无法设置 graph.timestamps

    我在 Docker 容器中运行 Janusgraph 0 3 2 并尝试使用运行 HBase 1 4 9 的 AWS EMR 集群作为存储后端 我可以运行 gremlin server sh 但如果我尝试保存某些内容 我会得到粘贴在下面的堆
  • Java 8 方法签名不一致

    Java 8 为我们提供了具有很长签名的新方法 如下所示 static
  • Hibernate 标准接受 %% 值

    我正在使用下面的 Hibernate 代码来过滤workFlowName crt add Restrictions like workFlowName workFlow MatchMode ANYWHERE crt is the crite
  • 使用 Java 8 Spring 4 + MyBatis 集成问题

    使用 Java 8 1 8 0 60 Spring 4 2 1 和 MyBatis 3 3 0 时遇到以下异常 Sep 29 2015 11 02 58 AM org springframework context annotation A
  • Java 中序列化的目的是什么?

    我读过很多关于序列化的文章 以及它如何如此美好和伟大 但没有一个论点足够令人信服 我想知道是否有人能真正告诉我通过序列化一个类我们真正可以实现什么 让我们先定义序列化 然后我们才能讨论它为什么如此有用 序列化只是将现有对象转换为字节数组 该
  • 如何在J2ME中获取数字的幂[重复]

    这个问题在这里已经有答案了 可能的重复 J2ME power double double 数学函数实现 https stackoverflow com questions 2076913 j2me powerdouble double ma
  • Unicode(希腊语)字符存储在数据库中,例如“??????”

    数据库中的希腊字符就像问号 我找不到解决办法 我使用 Java Swing 开发了一个应用程序 但是当我在 MySQL 中插入希腊字母时 就像问号一样 我将数据库排序规则更改为 utf8 并将列也更改为 utf8 我的项目编码设置为UTF

随机推荐

  • 系统开发与运行

    系统开发与运行 系统分析与设计 需求分析 需求工程 结构化分析与设计 测试基础知识 系统运行与维护 软件架构介绍 系统分析概述 系统分析是一种问题求解技术 它将一个系统分解成各个组成部分 目的是研究各个部分如何工作 交互 以实现其系统目标
  • set_new_handler(0)是什么意思?有什么用?

    出自 STL源码剖析 第45页中有一行代码set new handler 0 源代码 inline T allocate ptrdiff t size T std set new handler 0 T tmp T operator new
  • C#中File FileInfo 和Directory DirectoryInfo 类的区别

    老师在讲C 文件操作的时候讲的个类 功能类似 但用法有区别 他们都存在于systerm IO命名空间下 File和Directory的方法都是静态方法 FileInfo和DirectoryInfo的方法都是普通方法 老师建议是如果你要在某个
  • Python之PyAudio使用

    PyAudio 播放 录音 回放 回调方法播放 非阻塞回调 PyAudio 使用这个可以进行录音 播放 生成wav文件等等 播放 coding utf 8 引入库 import pyaudio import wave import sys
  • aiohttp 异步http请求-12.aiohttp 请求生命周期(和requests库有什么不一样?)

    前言 aiohttp 请求生命周期对比requests库使用的区别 aiohttp 客户端 API 当你第一次使用 aiohttp 时 你会注意到一个简单的 HTTP 请求不是一次执行的 而是最多三个步骤 async with aiohtt
  • dac0832三角波c语言程序,单片机控制DAC0832输出正弦波三角波汇编程序

    org 0000h LJMP MAIN ORG 0003H LJMP L0 MAIN MOV R2 0aH 调幅倍数 MOV R4 01H 增减选择 MOV R5 01H pp SETB EA SETB EX0 延时计数个数 MOV A 0
  • 渗透系列之排序处产生的SQL注入问题

    1 在日常的测试过程中 发现系统的排序功能最容易产生sql注入 我们需要重点关注业务系统的排序功能 一般功能点对应这类字段 sortField sortOrder order orderby等 举个排序的SQL注入案例 发现系统的一个查询功
  • 2017-2018-1 20155227 《信息安全系统设计基础》第十三周学习总结

    2017 2018 1 20155227 信息安全系统设计基础 第十三周学习总结 找出全书你认为最重要的一章 深入重新学习一下 要求 期末占10分 完成这一章所有习题 详细总结本章要点 给你的结对学习搭档讲解你的总结并获取反馈 我选择教材第
  • 冯乐乐之六,基础光照模型

    需要理清的概念 兰伯特 半兰伯特 冯模型 布林冯模型 高光反射specular 代表物体表面反射光线 漫反射diffuse 代表吸收然后散射出表面的光线 环境光ambient 自发光emissive 漫反射 漫反射从任何方向看都是一致的 漫
  • 科学推理~

    科学推理 物理 1 力学 重力 重力并不是指向地心的 只有赤道可以 弹力 重点 判断弹力方向 相互作用力 摩擦力 静摩擦力 滑动摩擦力 注意 最大静摩擦力默认等于滑动摩擦力 压强 固体压强 液体压强 连通器 气体压强 气体对外做功 T 下降
  • 计算机图形学OpenGLC++实现: 橡皮筋技术实现折线和矩形的鼠标实现(附源码)

    废话不多说 直接开始 下列是会使用到的函数简单介绍 初始化背景 void Initial void 改变窗口大小 void ChangeSize int w int h 菜单响应函数 chooseWay int value 清除当前已经画的
  • Vue3 学习笔记 —— (一)深入理解组合式 API

    Vue3 学习笔记梳理 Vue3 学习 零 Vue3 0 与 Vue2 x 的性能对比 一 搭建环境 二 创建项目 三 Vue3 Composition API 3 1 ref or setup reactive 3 1 1 非响应式数据显
  • 北斗系统学习—JT808协议用C语言解析

    前言 本人从事于Linux应用开发 音视频应用方向 现在主要是负者AI摄像头的开发 在学音视频的途中 虽然是个小白 但是更愿意把自己所学音视频的一些知识分享给大家 以后每周都会更新哦 本期介绍的是用c语言对Jt808协议解析 要对协议进行解
  • NotWritablePropertyException

    ssm项目又来一个低级错误 粗心粗心 异常信息 Caused by org springframework beans NotWritablePropertyException Invalid property mapperLocation
  • 【机器学习】人工神经网络(ANN)浅讲

    神经网络是一门重要的机器学习技术 它是目前最为火热的研究方向 深度学习的基础 学习神经网络不仅可以让你掌握一门强大的机器学习方法 同时也可以更好地帮助你理解深度学习技术 本文以一种简单的 循序的方式讲解神经网络 适合对神经网络了解不多的同学
  • Layui富文本编辑器图片上传接口(.NET C#)

    本来想偷懒找个现成的接口 搜了一下发现没有现成的 那我在这写一个并分享给大家吧 demo打包好了在我的csdn下载中心 http download csdn net download xianglikai1 9970000 下面也有代码和结
  • 设置QListWidget背景色为透明

    只要一条指令就可以实现 ui gt listWidget gt setStyleSheet background color transparent 其中background color设置参考CSS背景设置如下 以下摘自 http www
  • PD通信协议芯片选型分析对比

    目录 一 PD SINK协议芯片对比图 二 总结 关键词 pd协议芯片 协议芯片 芯片通信协议 通信协议 前言 在如今快节奏生活不断蔓延的背景下 人们对各种事情的处理也渐渐地开始要求在保证质量的情况下 不断加快 手机快充就是一个典型的例子
  • iOS开发之Xcode 6更新默认不支持armv7s架构

    最近一次的Xcode 6更新默认不再支持arm7s架构 究竟是要废除不用呢还是仅仅只是一个疏忽 目前的Xcode 6配置里定义 ARCHS STANDARD 为armv7 arm64 当然这个定义前提是它会一再要求你删除掉你原本设定的构建架
  • 将对象的null字段赋值为默认值

    import java lang reflect Field import java math BigDecimal import java util ArrayList import java util Date import org a