欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

判断对象是否为空、字符串是否为空的方式

程序员文章站 2022-05-25 08:18:50
...

一、判断对象是否为空

package org.springframework.util;

ArrayList<Object> list = new ArrayList<>();
//结果:true
System.out.println(ObjectUtils.isEmpty(list));

//判断数组是否为空
String[] strings = new String[]{};
// true 0
System.out.println(ObjectUtils.isArray(strings));
System.out.println(strings.length);

这个方法在common.lang3中也存在,但是没有考虑到Optional的情况

以下为两者的源码

//springframework源码
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;
    }
}

//common.lang3源码
public static boolean isEmpty(Object object) {
	if (object == null) {
	    return true;
	} else if (object instanceof CharSequence) {
	    return ((CharSequence)object).length() == 0;
	} else if (object.getClass().isArray()) {
	    return Array.getLength(object) == 0;
	} else if (object instanceof Collection) {
	    return ((Collection)object).isEmpty();
	} else {
	    return object instanceof Map ? ((Map)object).isEmpty() : false;
	}
}

二、判断字符串是否为空

1、使用Common.lang3下的StringUtils(建议)

<dependency>
	<groupId>org.apache.commons</groupId>
	<artifactId>commons-lang3</artifactId>
	<version>3.10</version>
</dependency>
//推荐使用(如果字符中是空的,也是true)  
System.out.println(StringUtils.isBlank(" "));//true
//字符中包含空格,它认为该字符串不为空
System.out.println(StringUtils.isEmpty(" "));//false

2、使用String内置的StringUtils(过期)

//false(同样认为不为空,而且提示该方法已经过期了,所以不推荐使用)
System.out.println(org.springframework.util.StringUtils.isEmpty(" "));

3、使用Common.lang下的StringUtils

<dependency>
    <groupId>commons-lang</groupId>
    <artifactId>commons-lang</artifactId>
    <version>2.6</version>
</dependency>
//false(同样认为不为空,所以不推荐使用)
System.out.println(org.apache.commons.lang.StringUtils.isEmpty(" "));

总结:推荐使用common.lang3

相关标签: 项目实践