日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

判断java中String、自定义对象、集合为空的方法

發(fā)布時(shí)間:2025/1/21 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 判断java中String、自定义对象、集合为空的方法 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、僅判斷是否分配內(nèi)存

如果僅判斷該對(duì)象、集合是否已被分配內(nèi)存(即null還是非null),而不用考慮是否有值,則直接使用 object == null判斷即可。

二、如果需進(jìn)一步判斷

要進(jìn)一步判斷該對(duì)象值、集合元素是否存在,(或者說當(dāng)值或元素不存在也判定為空)則繼續(xù):

2.1 String判斷
如果是String,可以使用StringUtils.isEmpty(),很多框架都提供StringUtils工具類,其中常用的是org.apache.commons.lang3與org.springframework.util提供的StringUtils.isEmpty()。
看下源碼就知道兩者區(qū)別在于:

//lang3 public static boolean isEmpty(CharSequence cs){return cs == null || cs.length() == 0; } //springframework public static boolean isEmpty(@Nullable Object str){return cs == null || "".equals(str); }

可以發(fā)現(xiàn),二者都支持null對(duì)象的判斷,但lang3僅適用于字符串判斷,而spring提供的可以對(duì)任何Object對(duì)象進(jìn)行判斷(事實(shí)上…對(duì)象啥時(shí)候會(huì)equals一個(gè)空字符串呢,只能判斷對(duì)象==null,不能判斷值是否null)

2.2 自定義對(duì)象判斷
目前應(yīng)該是沒有提供的工具類來判斷自定義對(duì)象屬性值是否null,org.springframework.util提供的ObjectUtils.isEmpty()方法也不可以判斷自定義的對(duì)象屬性

public static boolean isEmpty(@Nullable Object obj) {if (obj == null) {return true;} else if (obj instanceof Optional) {return !((Optional)obj).isPresent();} else if (obj instanceof CharSequence) {return ((CharSequence)obj).length() == 0;} else if (obj.getClass().isArray()) {return Array.getLength(obj) == 0;} else if (obj instanceof Collection) {return ((Collection)obj).isEmpty();} else {return obj instanceof Map ? ((Map)obj).isEmpty() : false;} }

自定義一個(gè)工具類,來實(shí)現(xiàn)自定義對(duì)象屬性的判斷
https://www.cnblogs.com/DFX339/p/9945771.html?ivk_sa=1024320u

import java.lang.reflect.Field; import java.lang.reflect.Type;public class ObjUtils {public static boolean objCheckIsNull(Object object){Class clazz = (Class)object.getClass(); // 得到類對(duì)象Field fields[] = clazz.getDeclaredFields(); // 得到所有屬性boolean flag = true; //定義返回結(jié)果,默認(rèn)為truefor(Field field : fields){field.setAccessible(true);Object fieldValue = null;try {fieldValue = field.get(object); //得到屬性值Type fieldType =field.getGenericType();//得到屬性類型String fieldName = field.getName(); // 得到屬性名System.out.println("屬性類型:"+fieldType+",屬性名:"+fieldName+",屬性值:"+fieldValue);} catch (IllegalArgumentException e) {e.printStackTrace();} catch (IllegalAccessException e) {e.printStackTrace();}//只要有一個(gè)屬性值不為null 就返回false 表示對(duì)象不為nullif(fieldValue != null){flag = false;break;}}return flag;} }

測(cè)試:

Child child = new Child(); System.out.println(ObjectUtils.isEmpty(child)); System.out.println(ObjUtils.objCheckIsNull(child)); System.out.println(child);

2.3 集合判斷
如果是集合,要使用 == null 先判斷,再使用isEmpty()方法判斷,避免空指針異常

public class TempTest {public static void main(String[] args) {ArrayList<String> list = null;System.out.println(list.isEmpty());} }


這里使用ArrayList實(shí)現(xiàn)Lis接口的isEmpty()方法,源碼如下

public boolean isEmpty() {return size == 0; }

可以看出,不能對(duì)空對(duì)象進(jìn)行判斷,而只能判斷集合中是否存在元素。事實(shí)上,類似的isEmpty()方法String中也存在,但都不能判斷null值,因?yàn)檎{(diào)用的是str.length == 0,同樣為null時(shí),報(bào)空指針異常。

事實(shí)上,org.springframework.util還提供了CollectionUtils工具類,然后調(diào)用CollectionUtils.isEmpty()方法來判斷集合為null,針對(duì)Map和其他集合分別提供isEmpty()方法來判斷,并且可以判斷集合為null情況,而不會(huì)出現(xiàn)空指針異常。

public static boolean isEmpty(@Nullable Collection<?> collection) {return collection == null || collection.isEmpty(); }public static boolean isEmpty(@Nullable Map<?, ?> map) {return map == null || map.isEmpty(); }

總結(jié)

1、如果僅判斷null的情況,不考慮值或元素存在與否,直接使用 == null即可
2、如果將值或元素不存在也看作為空,如果是簡(jiǎn)單的String,則使用lang3或spring下的StringUtils.isEmpty()都行;而如果是集合,則考慮springframework提供的CollectionUtils.isEmpty()來判斷集合。
3、不論是lang3提供的StringUtils還是spring提供的StringUtils、CollectionUtils,它們優(yōu)點(diǎn)在于不用兩次判斷(先判斷==null,再判斷元素),它們提供的isEmpty()方法已經(jīng)考慮了這兩種情況。
4、自定義對(duì)象屬性為空判斷需要自定義工具類來實(shí)現(xiàn)。

總結(jié)

以上是生活随笔為你收集整理的判断java中String、自定义对象、集合为空的方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。