简介
本文希望能帮助读者,在最快的时间内学会如何使用Optional,在工作中全面使用Optional,避免出现空指针问题。
参考文章:用Optional后代码变清爽多了
快速开始
原则一:只使用Optional.ofNullable()。
解释:目标是全面使用Optional,为了降低决策时间,防止纠结不同场景该使用哪种API。因此,只是使用Optional.ofNullable(),并且笔者认为工作中使用Optional.of()和Optional.empty()的场景较少。
原则二:尽量只使用map()、orElse()。
解释:使用map(),可以在不担心NPE的情况下获取值。使用orElse()给某个对象为空时的结果一个默认值。
原则三:尽量不使用ifPresent。
解释:可读性并不高,但是如果处理表达式较简单,可在特定场景使用。
最佳实践
原则二
@Data
public class Position {
private String positionName;
private Index index;
@Data
public static class Index{
private Integer x;
private Integer y;
}
}
private Integer sumIndex(Position position){
Integer xIndex = Optional.ofNullable(position)
.map(Position::getIndex)
.map(Position.Index::getX)
.orElse(0);
Integer yIndex = Optional.ofNullable(position)
.map(Position::getIndex)
.map(Position.Index::getY)
.orElse(0);
return xIndex + yIndex;
}
原则三
private void exchangeIndex(Position position){
Optional.ofNullable(position)
.map(Position::getIndex)
.ifPresent(index -> {
Integer temp = index.getX();
index.setX(index.getY());
index.setY(temp);
});
}