判断java中String、自定义对象、集合为空的方法
一、僅判斷是否分配內存
如果僅判斷該對象、集合是否已被分配內存(即null還是非null),而不用考慮是否有值,則直接使用 object == null判斷即可。
二、如果需進一步判斷
要進一步判斷該對象值、集合元素是否存在,(或者說當值或元素不存在也判定為空)則繼續:
2.1 String判斷
如果是String,可以使用StringUtils.isEmpty(),很多框架都提供StringUtils工具類,其中常用的是org.apache.commons.lang3與org.springframework.util提供的StringUtils.isEmpty()。
看下源碼就知道兩者區別在于:
可以發現,二者都支持null對象的判斷,但lang3僅適用于字符串判斷,而spring提供的可以對任何Object對象進行判斷(事實上…對象啥時候會equals一個空字符串呢,只能判斷對象==null,不能判斷值是否null)
2.2 自定義對象判斷
目前應該是沒有提供的工具類來判斷自定義對象屬性值是否null,org.springframework.util提供的ObjectUtils.isEmpty()方法也不可以判斷自定義的對象屬性
自定義一個工具類,來實現自定義對象屬性的判斷
https://www.cnblogs.com/DFX339/p/9945771.html?ivk_sa=1024320u
測試:
Child child = new Child(); System.out.println(ObjectUtils.isEmpty(child)); System.out.println(ObjUtils.objCheckIsNull(child)); System.out.println(child);2.3 集合判斷
如果是集合,要使用 == null 先判斷,再使用isEmpty()方法判斷,避免空指針異常
這里使用ArrayList實現Lis接口的isEmpty()方法,源碼如下
可以看出,不能對空對象進行判斷,而只能判斷集合中是否存在元素。事實上,類似的isEmpty()方法String中也存在,但都不能判斷null值,因為調用的是str.length == 0,同樣為null時,報空指針異常。
事實上,org.springframework.util還提供了CollectionUtils工具類,然后調用CollectionUtils.isEmpty()方法來判斷集合為null,針對Map和其他集合分別提供isEmpty()方法來判斷,并且可以判斷集合為null情況,而不會出現空指針異常。
public static boolean isEmpty(@Nullable Collection<?> collection) {return collection == null || collection.isEmpty(); }public static boolean isEmpty(@Nullable Map<?, ?> map) {return map == null || map.isEmpty(); }總結
1、如果僅判斷null的情況,不考慮值或元素存在與否,直接使用 == null即可
2、如果將值或元素不存在也看作為空,如果是簡單的String,則使用lang3或spring下的StringUtils.isEmpty()都行;而如果是集合,則考慮springframework提供的CollectionUtils.isEmpty()來判斷集合。
3、不論是lang3提供的StringUtils還是spring提供的StringUtils、CollectionUtils,它們優點在于不用兩次判斷(先判斷==null,再判斷元素),它們提供的isEmpty()方法已經考慮了這兩種情況。
4、自定義對象屬性為空判斷需要自定義工具類來實現。
總結
以上是生活随笔為你收集整理的判断java中String、自定义对象、集合为空的方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Mybatis执行select语句无匹配
- 下一篇: @EnableCaching与@Cach