博客
关于我
Optional类:避免NullPointerException
阅读量:793 次
发布时间:2023-02-24

本文共 2161 字,大约阅读时间需要 7 分钟。

Java Optional?????

Java 8???Optional???????????null???????Optional?????????????????????????null????NullPointerException????????Optional??????????

1. Optional?????

Optional?????of()?ofNullable()???????of()?????????null???ofNullable()???????null?????????????

Optional.of("?null?");Optional.ofNullable(null);

2. Optional????????

Optional?????????Present?????Absent????????isPresent()??????true??????false?????????empty()???????????Optional???

Optional
optional = Optional.ofNullable(null);if (optional.isPresent()) { System.out.println("???");} else { System.out.println("???");}

3. ????????

????????Optional???????????????orElse()????????????

String defaultValue = "???";String result = optional.orElse(defaultValue);

???????????????orElseThrow()????????Supplier???????????

try {    String value = optional.orElseThrow(() -> new IllegalArgumentException("???"));    System.out.println(value);} catch (IllegalArgumentException e) {    System.out.println(e.getMessage());}

4. ??ally??

ifPresent()????????????????Consumer?

optional.ifPresent(System.out::println);

???????????Consumer???????????

5. ??????

???????Optional????map()?flatMap()???????????Optional?????????????

optional.map(String::toUpperCase);optional.flatMap(String::isEmpty);

6. ????

?????????????

public class OptionalExample {    public static void main(String[] args) {        Optional
optional = Optional.ofNullable(null); // ??????? if (optional.isPresent()) { System.out.println("???"); } else { System.out.println("???"); } // ????? String value = optional.orElse("???"); System.out.println(value); // ???? try { String valueOrThrow = optional.orElseThrow(() -> new IllegalArgumentException("???")); System.out.println(valueOrThrow); } catch (IllegalArgumentException e) { System.out.println(e.getMessage()); } // ??????? optional.ifPresent(System.out::println); }}

??

Optional?????????????null???????????????orElse?orElseThrow?ifPresent??????????????????????Optional??????????????????

转载地址:http://tipfk.baihongyu.com/

你可能感兴趣的文章
OpenCV学堂 | CV开发者必须懂的9种距离度量方法,内含欧氏距离、切比雪夫距离等(建议收藏)
查看>>
OpenCV学堂 | OpenCV案例 | 基于轮廓分析对象提取
查看>>
OpenCV学堂 | YOLOv8与YOLO11自定义数据集迁移学习效果对比
查看>>
OpenCV学堂 | YOLOv8官方团队宣布YOLOv11 发布了
查看>>
OpenCV学堂 | YOLOv8实战 | 荧光显微镜细胞图像检测
查看>>
OpenCV学堂 | 汇总 | 深度学习图像去模糊技术与模型
查看>>
OpenCV安装
查看>>
OpenCV官方文档 理解k - means聚类
查看>>
opencv实现多路播放
查看>>
opencv常用函数
查看>>
OpenCV探索
查看>>
OpenCV添加中文(五)
查看>>
OpenCV点目标检测未找到所有目标,并且找到的圆圈偏移
查看>>
opencv特征提取1-Harris角点检测
查看>>
OpenCV环境搭建(一)
查看>>
OpenCV的视频读取
查看>>
openCV目标识别 目标跟踪 YOLO5深度学习 Python 计算机视觉 计算机毕业设计 源码下载
查看>>
opencv笔记(1):图像缩放
查看>>
opencv笔记(二十四)——得到轮廓之后找到凸包convex hull
查看>>
OpenCV计算点到直线的距离 数学法
查看>>