Java8 之 OPTIONAL 妙用
程序员文章站
2022-06-07 12:36:23
...
在掘金上看到了一篇关于java8新特性OPTIONAL的使用,
想来平时编写代码过程中判null的情况还是很多,特意记录下。
User 结构
public class User {
private String name;
public String getName() {
return name;
}
}
使用optional 获取 name
String name = Optional.ofNullable(user).map(u-> u.getName()).get();
例子:
代码:
public String getCity(User user) throws Exception{
if(user!=null){
if(user.getAddress()!=null){
Address address = user.getAddress();
if(address.getCity()!=null){
return address.getCity();
}
}
}
throw new Excpetion("取值错误");
}
使用OPTIONAL :
public String getCity(User user) throws Exception{
return Optional.ofNullable(user)
.map(u-> u.getAddress())
.map(a->a.getCity())
.orElseThrow(()->new Exception("取指错误"));
}
代码:
if(user!=null){
dosomething(user);
}
使用OPTIONAL :
Optional.ofNullable(user)
.ifPresent(u->{
dosomething(u);
});
代码:
public User getUser(User user) throws Exception{
if(user!=null){
String name = user.getName();
if("zhangsan".equals(name)){
return user;
}
}else{
user = new User();
user.setName("zhangsan");
return user;
}
}
使用OPTIONAL :
public User getUser(User user) {
return Optional.ofNullable(user)
.filter(u->"zhangsan".equals(u.getName()))
.orElseGet(()-> {
User user1 = new User();
user1.setName("zhangsan");
return user1;
});
}
推荐阅读
-
java8中forkjoin和optional框架使用
-
Java8中新特性Optional、接口中默认方法和静态方法详解
-
Java8新特性之JavaFX 8_动力节点Java学院整理
-
Java8新特性之Base64详解_动力节点Java学院整理
-
Java8新特性之泛型的目标类型推断_动力节点Java学院整理
-
Java8新特性之StampedLock_动力节点Java学院整理
-
Java8新特性之lambda的作用_动力节点Java学院整理
-
Java8新特性之再见Permgen_动力节点Java学院整理
-
Java8新特性之精简的JRE详解_动力节点Java学院整理
-
Java8新特性之深入解析日期和时间_动力节点Java学院整理