Java 判斷實(shí)體對(duì)象及所有屬性是否為空的操作
1、判斷實(shí)體對(duì)象是否為空
2、判斷對(duì)象所有屬性是否為空
3、特別注意,實(shí)體類中如果有基本數(shù)據(jù)類型,會(huì)影響判斷
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); } /** * 判斷對(duì)象中屬性值是否全為空 * * @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; } }
實(shí)體類:
package com.liuxd.object; /** * Created by Liuxd on 2018/11/2. */ public class User { private String name; private String gender; /** * 如果屬性類型為基本數(shù)據(jù)類型,則會(huì)有默認(rèn)值 * 影響正確判斷,請(qǐng)?zhí)貏e注意 */ // 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; } }
輸出結(jié)果:
name:Jack name:null gender:null age:null user1 是否為空:false user2 是否為空:true
補(bǔ)充知識(shí):Java判斷一個(gè)實(shí)體類對(duì)象實(shí)例的所有成員變量是否為空
看代碼吧~
/** *判斷一個(gè)實(shí)體類對(duì)象實(shí)例的所有成員變量是否為空 *@param obj 校驗(yàn)的類對(duì)象實(shí)例 *@return List *@throws Exception */ public static List<String> isObjectFieldEmpty(Object obj) throws Exception { Class<?> clazz=obj.getClass(); //得到類對(duì)象 Field[] fs=clazz.getDeclareFields(); //得到屬性集合 List<String> list=new ArrayList<String>(); for(Field field:fs){ //遍歷屬性 field.setAccessible(true); //設(shè)置屬性是可以訪問的(私有的也可以) if(field.get(obj)==null||field.get(obj)==""||"null".equalsIngnoreCase(String)field.get(obj))){ String name=(String)field.getName(); list.add(name); } } return list; }
以上這篇Java 判斷實(shí)體對(duì)象及所有屬性是否為空的操作就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java反射機(jī)制,如何將一個(gè)實(shí)體類所有字段賦值為null
這篇文章主要介紹了Java反射機(jī)制,如何將一個(gè)實(shí)體類所有字段賦值為null,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03IntelliJ IDEA中如何構(gòu)建Spring Boot的項(xiàng)目
這篇文章主要介紹了IntelliJ IDEA中如何構(gòu)建Spring Boot的項(xiàng)目問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07SpringBoot+Mybatis項(xiàng)目使用Redis做Mybatis的二級(jí)緩存的方法
本篇文章主要介紹了SpringBoot+Mybatis項(xiàng)目使用Redis做Mybatis的二級(jí)緩存的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-12-12