Java 判断实体对象及所有属性是否为空的操作

作者:春风化作秋雨 时间:2022-12-06 14:32:07 

1、判断实体对象是否为空

2、判断对象所有属性是否为空

3、特别注意,实体类中如果有基本数据类型,会影响判断


package com.liuxd.object;
import org.apache.commons.lang3.StringUtils;
import java.lang.reflect.Field;

/**
* Created by Liuxd on 2018/11/2.
*/
public class TestEntity {

public static void main(String[] args) {
User user1 = new User("Jack", "male", 17);
User user2 = new User();

boolean u1Flag = checkObjAllFieldsIsNull(user1);
boolean u2Flag = checkObjAllFieldsIsNull(user2);

System.out.println("user1 是否为空:" + u1Flag);
System.out.println("user2 是否为空:" + u2Flag);
}

/**
* 判断对象中属性值是否全为空
*
* @param object
* @return
*/
public static boolean checkObjAllFieldsIsNull(Object object) {
if (null == object) {
 return true;
}

try {
 for (Field f : object.getClass().getDeclaredFields()) {
 f.setAccessible(true);

System.out.print(f.getName() + ":");
 System.out.println(f.get(object));

if (f.get(object) != null && StringUtils.isNotBlank(f.get(object).toString())) {
  return false;
 }

}
} catch (Exception e) {
 e.printStackTrace();
}

return true;
}
}

实体类:


package com.liuxd.object;

/**
* Created by Liuxd on 2018/11/2.
*/
public class User {
private String name;
private String gender;

/**
* 如果属性类型为基本数据类型,则会有默认值
* 影响正确判断,请特别注意
*/
// private int age;
private Integer age;
public User() {
}

public User(String name, String gender, int age) {
this.name = name;
this.gender = gender;
this.age = age;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getGender() {
return gender;
}

public void setGender(String gender) {
this.gender = gender;
}

public Integer getAge() {
return age;
}

public void setAge(Integer age) {
this.age = age;
}
}

输出结果:


name:Jack
name:null
gender:null
age:null
user1 是否为空:false
user2 是否为空:true

补充知识:Java判断一个实体类对象实例的所有成员变量是否为空

看代码吧~


/**
*判断一个实体类对象实例的所有成员变量是否为空
*@param obj 校验的类对象实例
*@return List
*@throws Exception
*/

public static List<String> isObjectFieldEmpty(Object obj) throws Exception {
Class<?> clazz=obj.getClass(); //得到类对象
Field[] fs=clazz.getDeclareFields(); //得到属性集合
List<String> list=new ArrayList<String>();
for(Field field:fs){      //遍历属性
  field.setAccessible(true); //设置属性是可以访问的(私有的也可以)
  if(field.get(obj)==null||field.get(obj)==""||"null".equalsIngnoreCase(String)field.get(obj))){
 String name=(String)field.getName();
 list.add(name);
 }
}
return list;
}

来源:https://adong.blog.csdn.net/article/details/83662333

标签:Java,实体对象,属性,为空
0
投稿

猜你喜欢

  • Android 文件操作方法

    2023-06-02 12:51:17
  • Groovy编程入门攻略

    2022-12-05 13:35:47
  • Adapter模式实战之重构鸿洋集团的Android圆形菜单建行

    2021-11-02 09:42:32
  • C#利用System.Threading.Thread.Sleep即时输出信息的详解

    2021-07-08 02:35:15
  • 浅谈java 执行jar包中的main方法

    2022-06-28 07:58:27
  • 详解C#通过反射获取对象的几种方式比较

    2021-07-26 17:45:55
  • Spring自定义参数解析器代码实例

    2023-07-02 15:08:06
  • Java源码解析HashMap的keySet()方法

    2023-11-11 06:33:05
  • Spring boot动态修改日志级别的方法

    2023-04-04 09:36:00
  • springboot如何读取配置文件到静态工具类

    2023-11-28 04:44:54
  • java项目中的绝对路径和相对路径用法说明

    2023-11-27 22:08:44
  • 解决IDEA无法下载maven依赖的问题

    2023-12-05 17:06:59
  • Mybatis Trim标签用法简单介绍

    2021-10-11 03:04:00
  • JAVA发送HTTP请求,返回HTTP响应内容,应用及实例代码

    2022-11-21 07:42:03
  • Java实现文件和base64流的相互转换功能示例

    2023-11-18 07:45:01
  • spring boot使用拦截器修改请求URL域名 换 IP 访问的方法

    2022-08-21 20:15:53
  • Java使用IO流实现音频的剪切和拼接

    2023-09-11 08:47:46
  • C# DataSet的内容写成XML时如何格式化字段数据

    2023-04-14 09:01:28
  • c语言动态数组示例

    2023-11-02 22:56:44
  • C#使用TextBox作数据输入方法

    2023-11-16 22:26:14
  • asp之家 软件编程 m.aspxhome.com