编辑
2022-11-29
学习记录
00
请注意,本文编写于 856 天前,最后修改于 855 天前,其中某些信息可能已经过时。

目录

工作中经常使用到对于对象、列表、字符串为空的验证,这次查看一下Objectutils.isEmpty()判断逻辑

工作中经常使用到对于对象、列表、字符串为空的验证,这次查看一下Objectutils.isEmpty()判断逻辑

先上代码

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; } }

首先允许为空 第二步,然后判断是否为空optional ,这个类可以作为null的容器,调用isPresent判断是否为空 第三步,判断是否为字符序列,如果为字符序列则判断长度是否大于零 第四步通过反射判断是否为array,如果是array则判断长度大于零 第五步判断是否为collection类,如果是则调用collection判断为空方法 第六步判断是否为map类 ,为map类则调用为空方法

对map、list、对象为空判断较好,但是字符串就比较差了,空字符串是不算null的, 可以采用StringUils工具类来判断

下面这是hutool工具箱的ObjectUtil isEmpty方法

public static boolean isEmpty(Object obj) { if (null == obj) { return true; } else if (obj instanceof CharSequence) { return StrUtil.isEmpty((CharSequence)obj); } else if (obj instanceof Map) { return MapUtil.isEmpty((Map)obj); } else if (obj instanceof Iterable) { return IterUtil.isEmpty((Iterable)obj); } else if (obj instanceof Iterator) { return IterUtil.isEmpty((Iterator)obj); } else { return ArrayUtil.isArray(obj) ? ArrayUtil.isEmpty(obj) : false; } }

本文作者:Weee

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!