Java8 Optional实例操作
【摘要】
Java中常见的NPE错误真实伤害了一大推程序猿,不过JDK8之后,终于出现了,一个可以解决这个问题的API,这个就是Optional。
首先看这个源码的构造方法
Optional.ofNullable(null)//如果null就返回一个空对象public static <T> Optional<...
Java中常见的NPE错误真实伤害了一大推程序猿,不过JDK8之后,终于出现了,一个可以解决这个问题的API,这个就是Optional。
-
首先看这个源码的构造方法
- Optional.ofNullable(null)
-
//如果null就返回一个空对象
-
public static <T> Optional<T> ofNullable(T value) {
-
return value == null ? empty() : of(value);
-
}
-
//EMPTY private static final Optional<?> EMPTY = new Optional<>();
-
public static<T> Optional<T> empty() {
-
@SuppressWarnings("unchecked")
-
Optional<T> t = (Optional<T>) EMPTY;
-
return t;
-
}
- Optional.of(null) 异常
-
//使用静态方法of,这个值会进行非null判断,如果null直接就报异常
-
public static <T> Optional<T> of(T value) {
-
return new Optional<>(value);
-
}
-
private Optional(T value) {
-
this.value = Objects.requireNonNull(value);
-
}
-
然后使用这个APi的接口方法,通过和传统的对比
- 传统方式获得User的名字name
-
要对if(!=null){
-
return user.getName();
-
}
- 新方式
-
Optional<User> opts = Optional.ofNullable(new User("liuxin1"));
-
-
opts.orElse("liuxin2").getName();//如果存在就返回已经存在的,如果不存在就返回liuxin2
-
-
这段代码返回的是:liuxin1
-
//orElseGet,返回就的是一段函数,就是{}里面的,这个是lambda表达式,如果不会,可以看上一教程
-
String name = opts.orElseGet(() -> {
-
return new User("1");
-
}).getName();
-
System.out.println(name);//1
-
- map方法 ,lambdm表达式
-
opts.map(user -> {
-
return user.getName();
-
}).map(name -> {
-
return name.toUpperCase();
-
}).ifPresent(System.out::println);
- opts.isPresent() 存在就true,反之false
常用的就这些了,就这样喽,主要靠理解,少年加油⛽️
文章来源: springlearn.blog.csdn.net,作者:西魏陶渊明,版权归原作者所有,如需转载,请联系作者。
原文链接:springlearn.blog.csdn.net/article/details/102425317
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)