在开发过程中,日常对一些对象或者包装类型进行判断。例如if语句和Java 8的Optional
IF 语句
Long id = 1L;
if(id != null && id.compareTo(0L) > 0) {
// 代码
}
Optional
Optional.ofNullable(id)
.fiter(t->t.compareTo(0L) > 0).ifPresent(t->{
// 逻辑代码
});
区别
1、两者都可以进行对id非空和值大于0进行判断,但是对于Optional来说 ,主要是非空和正确的判断,假如要呈现另一种情况的话,那么if中else就会有明显的优势。
2、Optional类是final类,也是单例模式的一种,并且是饿汉式的生成对象。
public final class Optional<T> {
/**
* Common instance for {@code empty()}.
*/
private static final Optional<?> EMPTY = new Optional<>();
}
再进行Optional的ofNullable的方法的时候
public static <T> Optional<T> ofNullable(T value) {
return value == null ? empty() : of(value);
}
而of方法
public static <T> Optional<T> of(T value) {
return new Optional<>(value);
}
调用了new。也就是返回一个optional的对象。
而相当if语句来说暂且不用去生成什么对象。
总结
两者的便利之处还是根据具体场景而定。如有其余见解,记得评论下。
有时候撰写代码的时候,尽量多想想有没有其他方式可以替代原有的方式。