Optional类:避免NullPointerException
发布日期:2025-04-29 07:56:17 浏览次数:14 分类:精选文章

本文共 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??????????????????

上一篇:Optional讲解
下一篇:Optional用法与争议点

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2026年06月17日 06时27分09秒