引入一个新的类java.util.Optional<T>,这个类封装了Optional的值。
问题:什么时候要用Optional包裹字段,什么不应该用?
(1)应该用Optional的情况:当你认为这个字段可能为null,也可能部位null,或者你自己也不确定的情况。比如:一个人可能有车,也可能没有车,此时,你就应该用一个Optional类来包装,当值为null时对应的就是一个空的Optional对象。
(2)无需Optional的情况:就是你已经明确的知道,某个字段一定不为null,则无需用Optional。
代码如下:
class Person{
private Car car;
public Optional<Car> getCar(){
return Optional.ofNullable(car);
}
public void setCar(Car car) {
this.car = car;
}
}
class Car{
private Insurance insurance;
public Optional<Insurance> getInsurance(){
return Optional.ofNullable(insurance);
}
public void setInsurance(Insurance insurance) {
this.insurance = insurance;
}
}
class Insurance{
private String name;
public String getName(){
return name;
}
}
public class NullException {
public static String getCarInsuranceName(Optional<Person> person){
return person.flatMap(p->p.getCar())
.flatMap(car->car.getInsurance())
.map(insurance->insurance.get

本文介绍了Java 8中的Optional类,用于处理可能为null的值,以减少空指针异常。讨论了何时使用Optional,如不确定字段是否为null,以及不使用的情况,即明确字段不会为null。文章列举了Optional的常用方法,如orElse、orElseGet和orElseThrow,并通过示例展示了如何用Optional替代传统的if语句,提高代码的可读性和安全性。
最低0.47元/天 解锁文章
174

被折叠的 条评论
为什么被折叠?



