Objects
JDK 1.7中,提供了一个对象工具类 java.util.Objects
, 这个类中提供了封装好的非空判断,Objects 类是一个终类,并且它里面的方法都是 static 修饰的。
1. nonNull
注:这个方法是nonNull是JDK1.8的方法。
判断对象不等于空:
if (Objects.nonNull(obj)){
// 判断不等于空
}
2. isNull
注:这个方法是isNull是JDK1.8的方法。
判断对象等于空:
if (Objects.isNull(obj)){
// 判断等于空
}
3. requireNonNull
空值检查 并不等同于 空值判断,空值判断是根据对象是否为空而执行不同的分支策略,而空值检查是要求对象不能为空。
public static <T> T requireNonNull(T obj) {
if (obj == null)
throw new NullPointerException();
return obj;
}
此方法主要用于在 方法 和 构造函数 中进行参数验证,例如:
public class Foo {
private final Bar bar;
public Foo(Bar bar) {
Objects.requireNonNull(bar);
this.bar = bar;
}
}
该方法还提供了一个重载方法 requireNonNull(T obj, String message)
,可以自定义抛出NPE信息
public class Foo {
private final Bar bar;
public Foo(Bar bar) {
Objects.requireNonNull(bar, "bar must not be null");
this.bar = bar;
}
}
使用 requireNonNull
的优势:
- 提高代码的可读性。
- 在对象创建的上下文抛出NPE,可以更好的在日志中反应出问题所在。
- 不需要在别的地方再进行重复的非空判断检查。