TOC

转载:Java 判断是否为空

观点

不要用 xx != null && xx.length() > 0 来判空,可以使用 apache 的 commons 包。例如使用:

StringUtils.isNotEmpty
CollectionUtils.isEmpty

不容拒绝理由

使用 xx != null && xx.length() > 0 来判空,公司里的静态代码检查会检查让你覆盖这两个条件,你需要写两个单测来完成任务。而使用 apache 的 commons 只需要写一个单测。你的条件覆盖率达标了吗?

深层原因

StringUtils类的源码:

public static boolean isNotEmpty(String str) {
    return !isEmpty(str);
}

public static boolean isEmpty(String str) {
    return str == null || str.length() == 0;
}

咦,好像和自己实现的差不多嘛!str == null || str.length() == 0 取个反,还多个一个反运算。效率一点也不高嘛!

请注意这两个方法是静态的!静态方法在类加载时候初始化,常驻在内存中只存一份。而自己写的判断语句,只能这个方法使用,其他方法同样的语句要复制一份。静态方法更加方便快捷。

当然,apache 的 commons 最根本的优势是语义更加清晰,更易读。