目录
- 1. 判断对象是否为空
- 2. 判断字符串是否为空
- 方法一:使用 equals 方法
- 方法二:使用 Apache Commons Lang 的 StringUtils
- 3. 判断集合是否为空
- 方法二:使用 Apache Commons Lang 的 CollectionUtils
- 4. 通用判空方法
- 5. 性能考虑
- 6. 总结
1. 判断对象是否为空
对于一个对象(Object),通常我们会检查它是否为 null:
if (obj == null) {
// 处理为空的情况
}
优点:简单直接,适用于所有对象类型。 缺点:仅能判断 null,不能判断空字符串或空集合。
2. 判断字符串是否为空
对于字符串(String),我们需要同时考虑 null 和空字符串(“”)的情况:
方法一:使用 equals 方法
if (str == null || str.isEmpty()) {
// 字符串为空或 null
}
优点:简洁明了。 缺点:如果字符串为 null,直接调用 str.isEmpty() 会抛出 NullPointerException,所以需要先检查 null。
方法二:使用 Apache Commons Lang 的 StringUtils
如果你使用了 Apache Commons Lang 库,可以使用 StringUtils.isBlank() 方法,它不仅能判断 null 和空字符串,还能判断字符串是否只包含空白字符(如空格、换行符等):
import org.apache.commons.lang3.StringUtils;
if (StringUtils.isBlank(str)) {
// 字符串为空、null 或只包含空白字符
}
优点:功能更全面,适合复杂场景。 缺点:需要引入额外的库。
3. 判断集合是否为空
对于集合(Collection),我们可以使用 isEmpty() 方法:
if (collection == null || collection.isEmpty()) {
// 集合为空或 null
}
优点:简单直接。 缺点:如果集合为 null,直接调用 collection.isEmpty() 会抛出 NullPointerException,所以需要先检查 null。
方法二:使用 Apache Commons Lang 的 CollectionUtils
如果你使用了 Apache Commons Lang 库,可以使用 CollectionUtils.isEmpty() 方法:
import org.apache.commons.lang3.CollectionUtils;
if (CollectionUtils.isEmpty(collection)) {
// 集合为空或 null
}
优点:功能更全面,避免了 NullPointerException。 缺点:需要引入额外的库。
4. 通用判空方法
对于其他对象(如数组、Map 等),可以根据具体类型选择合适的判空方法。例如:
- 数组:array == null || array.length == 0
- Map:map == null || map.isEmpty()
5. 性能考虑
在某些场景下,判空可能会影响性能,例如在循环中频繁判空。可以考虑将判空逻辑提取到一个工具方法中,避免重复代码。
6. 总结
- 对于对象,直接判断 == null。
- 对于字符串,使用 str == null || str.isEmpty() 或 StringUtils.isBlank()。
- 对于集合,使用 collection == null || collection.isEmpty() 或 CollectionUtils.isEmpty()。
在代码中尽量避免重复的判空逻辑,可以将其提取到工具类中。