先上代码
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 许可协议。转载请注明出处!