之前面试有面试官问:你说说java8都有些什么新特性,我居然蒙了!
以前使用if-else进行空判断,有点丑,现在可以试试JDK8-Optional优雅解决判断Null
1、of(T value):实际不怎么用
Optional.of(Object)
如果为null,则报NullPointerException
如果不为null,则正常
2、ofNullable
常用:Optional. ofNullable(x).orElse(0);//如果x为null则返回0;
//当user值不为null时,
//orElse函数依然会执行createUser()方法
user = Optional.ofNullable(user).orElse(createUser());
//而orElseGet函数并不会执行createUser()方法。
user = Optional.ofNullable(user).orElseGet(() -> createUser());
//orElseThrow,就是value值为null时,直接抛一个异常出去
Optional.ofNullable(user).orElseThrow(()->new Exception("用户不存在"));
3. map和flapmap
这个随便看看,我也没怎么用
public final class Optional<T> {
public<U> Optional<U> map(Function<? super T, ? extends U> mapper) {
Objects.requireNonNull(mapper);
if (!isPresent())
return empty();
else {
return Optional.ofNullable(mapper.apply(value));
}
}
public<U> Optional<U> flatMap(Function<? super T, Optional<U>> mapper) {
Objects.requireNonNull(mapper);
if (!isPresent())
return empty();
else {
return Objects.requireNonNull(mapper.apply(value));
}
}
}
hi~我是Mirror,一个为了自由安逸的未来而不断前进的的程序员。
如果你觉得文章对你有一点点帮助,一个小小赞,便是对我的认可,如果有不足之处,也欢迎各位指正。