用if判空?拜托,Out了!这些判空手段,学完不再失误
2023-09-21 23:13:09
前言
相信不少小伙伴已经被Java的NPE(Null Pointer Exception)所谓的空指针异常搞的头昏脑涨, 有大佬说过“防止NPE,是程序员的基本修养。”
但是修养归修养,也是我们程序员的痛。通常,我们都会使用if (obj != null)
这种方式来进行判空, 但是这种方式不仅繁琐,而且容易出错。
今天,我们就来聊聊除了if (obj != null)
之外,还有哪些判空手段。
一、使用Objects.isNull()
和Objects.nonNull()
在Java 7中,引入了Objects
类,其中提供了两个非常有用的方法:isNull()
和nonNull()
.这两个方法可以分别判断一个对象是否为null
和不为null
.
// 判断对象是否为null
if (Objects.isNull(obj)) {
// 做一些事情
}
// 判断对象是否不为null
if (Objects.nonNull(obj)) {
// 做一些事情
}
二、使用Optional
类
在Java 8中,引入了Optional
类,它是一个可以包含一个非null
值的容器。如果Optional
对象包含一个值,则称其为“存在”(present),否则称其为“不存在”(empty)。
我们可以使用Optional
类来避免空指针异常。
// 创建一个包含对象值的Optional对象
Optional<Object> obj = Optional.of(new Object());
// 判断Optional对象是否存在值
if (obj.isPresent()) {
// 获取Optional对象中的值
Object value = obj.get();
// 使用value做一些事情
}
三、使用断言
断言是一个在Java中用于检查程序状态的机制。如果断言为假,则会抛出AssertionError
异常。我们可以使用断言来检查对象是否为null
.
// 检查对象是否为null
assert obj != null;
// 如果对象为null,则抛出AssertionError异常
四、使用三元运算符
三元运算符是一个在Java中用于进行条件判断的运算符。它可以用来代替if
语句来进行判空。
// 使用三元运算符进行判空
String result = (obj != null) ? "对象不为null" : "对象为null";
五、使用lambda
表达式
lambda
表达式是Java 8中引入的一种新的语法特性。它可以用来简化代码,并使代码更具有可读性。我们可以使用lambda
表达式来进行判空。
// 使用lambda表达式进行判空
List<String> list = new ArrayList<>();
// 过滤掉list中的空字符串
list.removeIf(str -> str == null);
结语
以上五种判空手段各有其优缺点,我们可以根据实际情况选择最适合的一种。
希望这篇文章能给大家带来一些帮助,也希望大家能养成良好的编程习惯,避免出现空指针异常。
同时,也欢迎大家在评论区分享自己的判空技巧,让我们一起进步!