Optional是Java8提供的为了解决null安全问题的一个API。善用Optional可以使我们代码中很多繁琐、丑陋的设计变得十分优雅。
不使用Optional,代码是这样的:
public static String getName(User u) {
if (u == null)
return "Unknown";
return u.name;
}
使用了Optional后,代码变成了这样:
public static String getName (User u){
return Optional.ofNullable(u)
.map(user -> user.name)
.orElse("Unknown");
}
或者是这样(匿名内部类严重不推荐,相比于Lambda表达式繁琐多了):
public static String getName (User u){
return Optional.ofNullable(u)
.map(new Function<User, String>() {
@Override
public String apply(User user) {
return user.name;
}
})
.orElse("Unknown");
}
这样才是正确使用Optional的姿势。