Java 判断实体类属性是否为空工具类

2023-05-16

2019独角兽企业重金招聘Python工程师标准>>> hot3.png


import org.apache.commons.lang.StringUtils;
import java.lang.reflect.Field;
import java.lang.reflect.Method;


/**
 * 判断对象是否为空
 * @param obj
 * @return
 */
public static Boolean isNotEmptyBean(Object obj) {

   Boolean flag = false;

   try {
      if (null != obj){

         //得到类对象
         Class<?> c = (Class<?>) obj.getClass();

         //得到属性集合
         Field[] fs = c.getDeclaredFields();

         //得到方法体集合
         Method[] methods = c.getDeclaredMethods();

         //遍历属性

         for (Field f : fs) {

            //设置属性是可以访问的(私有的也可以)
            f.setAccessible(true);

            String fieldGetName = parGetName(f.getName());

            //判断属性是否存在get方法
            if (!checkGetMet(methods, fieldGetName)) {
               continue;
            }

            //得到此属性的值
            Object val = f.get(obj);

            //只要有1个属性不为空,那么就不是所有的属性值都为空
            if (isNotEmpty(val)) {
               flag = true;
               break;
            }
         }
      }
   } catch (Exception e) {
      log.error("判断对象是否为空出错:" + e.getMessage());
   }

   return flag;
}

/**
 * 拼接某属性的 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;
}  

转载于:https://my.oschina.net/u/3445245/blog/3052323

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

Java 判断实体类属性是否为空工具类 的相关文章

  • 走心整理——十个常用深度学习算法

    十分抱歉 xff0c 由于项目太忙 xff08 我会说自己懒吗 xff1f xff09 柳猫一直没有更新自己的手记 xff0c 现在 xff0c 就让柳猫来讲讲十个常用的深度学习算法 过去十年里 xff0c 人们对机器学习的兴趣经历了爆炸式
  • Linux信号量操作次数的探究

    需求源于项目中一部分设计的代码 struct semaphore类型的信号量 xff0c 使用up 进行释放 xff0c down interruptible 和down 获得指定信号量 xff08 前者中 xff0c 若该信号量已争用则进
  • 编写简单的MapReduce程序(Hadoop2.2.0)

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 我们以简化版的气温统计为例 xff0c 演示如何开发一个MapReduce程序 Eclipse中新建一个MapReduce项目 xff0c 命名为MaxTemperatur
  • 【操作系统】trap,interrupt,和异常

    陷阱 计算机有两种运行模式 xff1a 用户态 xff0c 内核态 其中操作系统运行在内核态 xff0c 在内核态中 xff0c 操作系统具有对所有硬件的完全访问权限 xff0c 可以使机器运行任何指令 xff1b 相反 xff0c 用户程
  • PowerShell-数组的多种录入方法

    PS xff1a 这个需求是小骆驼发起的 感谢 微软云方案交流 236804566 这个高端群的用户贡献 我们首先看看一个标准的数组 是怎么录入的 PS D gt arr 61 34 adf 34 34 asdfer 34 34 sreds
  • vnc 端口修改、用户添加删除、批量启动停止

    2019独角兽企业重金招聘Python工程师标准 gt gt gt yum y install tiger server usr bin env bash config file 61 34 etc sysconfig vncservers
  • Docker命令详解

    最近学习Docker xff0c 将docker所有命令实验了一番 xff0c 特整理如下 xff1a docker help Usage docker OPTIONS COMMAND arg docker daemon help dock
  • rman备份rman-00554 ,rman-04005错误

    gt rman target 64 orac 到Oracle安装目录找到 network admin sqlnet ora文件 将SQLNET AUTHENTICATION SERVICES 61 NONE 修改为 SQLNET AUTHE
  • 码农学ODL之SDN入门篇

    本文作为码农学ODL系列的SDN基础入门篇 xff0c 分为两部分 第一部分 xff0c 主要讲述SDN是什么 xff0c 改变了什么 xff0c 架构是什么样的 xff0c 第二部分 xff0c 简要介绍如何去学习SDN 1 什么是SDN
  • CAS单点登录之mysql数据库用户验证及常见问题

    前面已经介绍了CAS服务器的搭建 xff0c 详情见 xff1a 搭建CAS单点登录服务器 然而前面只是简单地介绍了服务器的搭建 xff0c 其验证方式是原始的配置文件的方式 xff0c 这显然不能满足日常的需求 下面介绍下通过mysql数
  • 抽象类和接口的区别

    抽象类和接口的区别 一 抽象类 xff1a 抽象类是特殊的类 xff0c 只是不能被实例化 xff1b 除此以外 xff0c 具有类的其他特性 xff1b 重要的是抽象类可以包括抽象方法 xff0c 这是普通类所不能的 抽象方法只能声明于抽
  • 对本课程的期望

    希望自己能够通过对本课程的学习 xff0c 对C语言能有进一步的了解 xff0c 能够学会自主运用 xff0c 学习到经验技术和知识 xff0c 也希望老师能够在学习新知识时多讲解多运用 xff0c 反复练习 xff0c 以增加学生对新知识
  • 一篇文章带你搞懂JS对象的自我销毁

    在日常的JS组件开发中 xff0c 往往会有一些较为复杂的DOM操作及事件监听 xff0c 尤其是在处理UI层面的widgets时候更为明显 常常会花很多精力在对象的init上 xff0c 而当组件需要被移除时则仅仅是把所在DOM草草的re
  • LCA系列 hdu2587

    题http acm hdu edu cn showproblem php pid 61 2586 好久不写LCA了 span class hljs preprocessor include lt cstdio gt span span cl
  • AutoLISPDCL对话框设计

    AutoLISPDCL对话框设计 xff0c 代码如下 defun c viewdcl if null dcl pt setq dcl pt 39 1 1 setq dcl file getfiled 34 打开DCL文件 34 34 34
  • boost的asio接收单路大数据量udp包的方法

    开发windows客户端接收RTP视频流 xff0c 当h264视频达到1080P 60fps的时候 xff0c 按包来调用recvfrom的函数压力比较大 xff0c 存在丢包的问题 xff0c windows的完成端口的性能效果当然可以
  • Python Word2Vec使用训练好的模型生成词向量

    文本文件必须是utf 8无bom格式 from gensim models deprecated word2vec import Word2Vec model 61 Word2Vec load 39 model Word60 model 3
  • 使用dig或nslookup指定dns服务器查询域名解析

    一般来说linux下查询域名解析有两种选择 xff0c nslookup或者dig xff0c 而在使用上我觉得dig更加方便顺手 如果是在linux下的话 xff0c 只要装上dnsutils这个包就可以使用dig命令 安装bind ut
  • freeswitch系列六 freeswitch在拨号计划中通过lua实现对redis操作

    3种freeswitch访问redis方案的分析 由于项目的原因 xff0c 需要在freeswitch的拨号计划中根据redis中特定key的值 xff0c 判断后续的操作是转发请求或者播放录音 这里需要freeswitch中实现对red
  • 接口异常状态统一处理方案在 Firefox 下无效的原因和解决方案

    没想到会是在双十一这么忙的时间段把这篇文章写完 xff0c 公司很忙很紧张 xff0c 可我还有时间在公司做分享 xff0c 写博文 xff0c 惭愧惭愧 做后台系统在双十一期间不如 2c 端的小伙伴有参与感呀 问题根源 上文 接口异常状态

随机推荐

  • 玩转神龙服务器的Hyper-V虚拟化网络之 配置直通网卡

    在上一篇 玩转神龙服务器的Hyper V虚拟化网络之 配置NAT网络 的文章中我们使用NAT的方式使Hyper V VM可以访问公网 在这一篇里 xff0c 我们会使用直通网卡的特性来使VM有对外提供服务的功能 前置条件 神龙服务器 xff
  • postgresql学习笔记1---安装和psql基本操作

    本文是PostgreSQL修炼之道这本书的学习笔记 xff0c 记录下疑惑或不解的地方 xff0e 这里也列一些资源 官方文档 http www postgresql org files documentation pdf 9 4 post
  • python 在字典中添加键值对的方法。

    list 添加元素的方法是 list append xff08 a xff09 将 a 添加到 list 里 dict 添加元素的方法是 dict update dict2 意为 xff0c 将 dict2 的内容添加到 dict 中 转载
  • 常用的4种开发模式

    常用的4种开发模式 1 瀑布式开发 瀑布式开发是由W W Royce在1970年提出的软件开发模型 xff0c 是一种比较老的计算机软件开发模式 xff0c 也是典型的预见性的开发模式 在瀑布式开发模式中 xff0c 开发严格遵循预先计划的
  • 骚猪队的模板

    SaoZhu Team Code Library 2017 11 TAGS ACM for newest edition click here East China Normal University Chen WeiWen Softwar
  • 用nodejs库cheerio抓取网页内容与图片

    之前都是PHP phpQuery 抓取 xff0c 但jQuery更强大 xff0c 于是用nodejs 只是node jquery的依赖太多 xff0c 只好用cheerio 下面是一个抓取脚本 xff1a var http 61 req
  • 完整的系统帮助类Utils

    来源 xff1a http www cnblogs com yuangang p 5477324 html using System using System Collections Generic using System Linq us
  • 转载--git教程

    http lazynight me 2898 html 转载于 https www cnblogs com benchan2015 p 4897797 html
  • 网络通信第一课 C++封装HTTP请求报文说明

    一个HTTP请求报文由请求行 xff08 request line xff09 请求头部 xff08 header xff09 空行和请求数据4个部分组成 使用C 43 43 组装上述报文 boost asio streambuf requ
  • [重要新功能]删除自己发表的评论

    当你登录后 使用cookie也可以 发表评论 不管是使用普通评论还是高级评论 xff0c 你就可以在其他人的Blog中删除自己发表过的评论 这样你在发表评论时 xff0c 如果写错了内容 可以删除后重发 接着 xff0c 准备增加在管理页面
  • 解析FAT16文件系统

    引导扇区的信息例如以下 xff1a 1 偏移地址00H xff0c 长度3 xff0c 内容 xff1a EB 3C 90 跳转指令 2 偏移地址03H xff0c 长度8 内容 xff1a 4D 53 44 4F 53 35 2E 30
  • 将 n个球放入M个盒子中, 设每个球落入各个盒子是等可能的,求有球的盒子数X 的期望...

    将 n个球放入M个盒子中 设每个球落入各个盒子是等可能的 求有球的盒子数X 的期望 引入随机变量 xi 表示第i个盒子有没有球 则 X 61 X1 43 X2 43 43 XM 于是 E X 61 E X1 43 E X2 43 43 E
  • Navicat for MySQL Mac 破解版

    今天在macOS 系统下搭建 Java开发环境 xff0c 需要配置MySQL xff0c 按照Windows的习惯 xff0c 使用Navicat for MySQL 操作比较习惯 然后找不到比较好的破解版 xff0c 这里介绍一个老版的
  • Echarts中X轴只显示最大值和最小值

    目标 xff1a 本篇文章是介绍使用Echarts时设置X轴上的刻度只显示最大值和最小值 xff0c 不显示其他的刻度 这个我在做项目的过程中遇到的一个需求 xff0c 我花费了很长的时间才找到的一种解决办法 xff0c 希望对后面遇到此坑
  • 机器学习期中考复习(md全是证明题)

    佛了
  • 页面字体随窗口变化大小

    详细描述 遇到了一个手机页面字体不能定死的问题 xff0c 页面会随着页面改变 xff0c 而改变大小 师弟遇到的问题 xff0c 我也遇到过 xff0c 我感觉这个东西可能还会有人遇到 截图 分辨是1000px的字体大小和400px的字体
  • 从Hadoop URL中读取数据

    为什么80 的码农都做不了架构师 xff1f gt gt gt 要从Hadoop文件系统中读取文件 xff0c 一个最简单的方法是使用java net URL对象来打开一个数据流 xff0c 从而从中读取数据 一般的格式如下 xff1a 1
  • 【01月11日】【精彩电影合集】【10部】【亲测】【Lsyq5647发布】

    今日电影更新 10部 1 爱情 07最新动作大片DVD中字 2 国家宝藏2 xff1a 神秘书 美国2008 动作大片DVD中文字幕 3 龙过鼠年 范伟 赵本山2008贺岁大片国语DVD版 4 本能 沙郎斯通性感演绎DVD未删减版 5 黑水
  • 关于ElasticsearchRepository的使用笔记

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 一个很全的API链接文档 以下是使用Spring data Jpa操作ES的一些记录 在ElasticsearchRepository中我们可以使用Not Add Like
  • Java 判断实体类属性是否为空工具类

    2019独角兽企业重金招聘Python工程师标准 gt gt gt import org apache commons lang StringUtils import java lang reflect Field import java