Java 判断对象空的方法
一、使用 == 或者 equals()比较
==
str == "";
str == null;
equals()
"".equals(str)
String str = null;
str2.equals(str);
注意
java中对equals的定义: 对于任何非空引用值 x,x.equals(null) 都应返回 false; 使用equals()判断对象null,会出现java.lang.NullPointerException异常 对于null 1.null是任何引用类型的默认值,不严格的说是所有object类型的默认值。这对所有变量都是适用的,如成员变量、局部变量、实例变量、静态变量; 2.null是任何一个引用类型变量的默认值,在java中不能使用null引用来调用任何的instance方法或者instance变量。
自定义方法
public static boolean isNull(Object object){
if (null == object) {
return true;
}
if ((object instanceof String)){
return "".equals(((String)object).trim());
}
return false;
}
二、StringUtils.isBlank(String str)
StringUtils.isBlank(String str) 判断某字符串是否为空或长度为0或由空白符(whitespace) 构成
StringUtils.isBlank(str);
System.out.println(StringUtils.isBlank(null));
System.out.println(StringUtils.isBlank(""));
System.out.println(StringUtils.isBlank(" "));
注意:
StringUtils.isBlank(String str) 等价于 !isBlank(String str)
三、StringUtils.isEmpty(String str)
StringUtils.isEmpty(String str) 判断某字符串是否为空,为空的标准是 str==null 或 str.length()==0
StringUtils.isEmpty(str);
System.out.println(StringUtils.isEmpty(null));
System.out.println(StringUtils.isEmpty(""));
System.out.println(StringUtils.isEmpty(" "));
注意:
StringUtils.isNotEmpty(String str) 等价于 !isEmpty(String str)
四、Optional(T value),empty(),of(T value),ofNullable(T value)
JDK 8 新方法**
1.Optional.of(T value) 该方法通过一个非 null 的 value 来构造一个 Optional,返回的 Optional 包含了 value 这个值。对于该方法,传入的参数一定不能为 null,否则便会抛出 NullPointerException。
Optional<String> str = Optional.of("");
Optional<String> strNull = Optional.of(null);
2.Optional.ofNullable(T value) Optional.ofNullable(T value):若 value 不为 null,创建 Optional 实例,否则创建空实例 该方法和 of 方法的区别在于,传入的参数可以为 null
public static <T> Optional<T> ofNullable(T value) {
return value == null ? empty() : of(value);
}
Optional<String> nullableOpt = Optional.ofNullable(str);
3.Optional.empty() 该方法用来构造一个空的 Optional,即该 Optional 中不包含值 —— 其实底层实现还是 如果 Optional 中的 value 为 null 则该 Optional 为不包含值的状态,然后在 API 层面将 Optional 表现的不能包含 null 值,使得 Optional 只存在 包含值 和 不包含值 两种状态。
Optional<String> emptyOpt = Optional.empty();
Optional判空
Optional.ofNullable(变量).orElse(默认值);
List<String> list = getList();
Optional.ofNullable(list).orElse(new ArrayList<>()).forEach(o -> {
System.out.println(o);
});
使用orElse方法设置默认值,Optional类还包含其他方法用于获取值: orElse():如果有值就返回,否则返回一个给定的值作为默认值; orElseGet():与orElse()方法作用类似,区别在于生成默认值的方式不同。该方法接受一个Supplier<? extends T>函数式接口参数,用于生成默认值; orElseThrow():与前面介绍的get()方法类似,当值为null时调用这两个方法都会抛出NullPointerException异常,区别在于该方法可以指定抛出的异常类型。
扩展
判断Null: isPresent():如果创建的对象实例为非空值的话,isPresent()返回true,调用get()方法会返回该对象,如果没有值,调用isPresent()方法会返回false,调用get()方法抛出NullPointerException异常。 使用filter()方法过滤 filter()方法可用于判断Optional对象是否满足给定条件,一般用于条件过滤,在代码中,如果filter()方法中的Lambda表达式成立,filter()方法会返回当前Optional对象值,否则,返回一个值为空的Optional对象。
|