23.Optional 类(创建 Optional 对象、Optional 类常用方法)

发布于:2025-02-11 ⋅ 阅读:(67) ⋅ 点赞:(0)

一、Optional 类

1、概述
  • Optional 类主要是处理空指针问题
2、传统方式处理空指针
package com.my.optional;

public class NullHandleTest {
    public static void main(String[] args) {
        String username = null;
        if (username != null) {
            System.out.println("字符串的长度为 " + username.length());
        } else {
            System.out.println("字符串为空");
        }
    }
}

二、Optional 类基本使用

1、创建 Optional 对象
(1)静态方法 of

创建 Optional 对象,不支持 null

Optional<String> op1 = Optional.of("tom");
System.out.println(op1);
(2)静态方法 ofNullable
  • 创建 Optional 对象,支持 null
Optional<String> op2 = Optional.ofNullable("jack");
System.out.println(op2);
Optional<Object> op3 = Optional.ofNullable(null);
System.out.println(op3);
(3)静态方法 empty
  • 创建空的 Optional 对象
Optional<Object> op4 = Optional.empty();
System.out.println(op4);
2、常用方法
(1)get 方法
  • 返回 Optional 对象中的值,如果没有值,则抛出异常(java.util.NoSuchElementException)
Optional<String> optional = Optional.ofNullable("jack");

System.out.println(optional.get());
(2)isPresent 方法
  • 判断是否包含值
Optional<String> optional = Optional.ofNullable("jack");

System.out.println(optional.isPresent());
(3)orElse 方法
  • Optional 对象中有值则返回该值,如果没有值,则返回 orElse 方法中指定的值
Optional<String> optional = Optional.ofNullable("jack");
Optional<Object> nullOptional = Optional.ofNullable(null);

System.out.println(optional.orElse("Hello World"));
System.out.println(nullOptional.orElse("Hello World"));
(4)orElseGet 方法
  • Optional 对象中有值则返回该值,如果没有值,则返回 orElseGet 方法中 Lambda 表达式的返回值
Optional<String> optional = Optional.ofNullable("jack");
Optional<Object> nullOptional = Optional.ofNullable(null);

System.out.println(optional.orElseGet(() -> "Hello World"));
System.out.println(nullOptional.orElseGet(() -> "Hello World"));
(5)orElseThrow 方法
  • Optional 对象中有值则返回该值,如果没有值,则返回 orElseThrow 方法中 Lambda 表达式抛出的异常
Optional<String> optional = Optional.ofNullable("jack");
Optional<Object> nullOptional = Optional.ofNullable(null);

System.out.println(optional.orElseThrow(() -> new RuntimeException("返回值为空")));
System.out.println(nullOptional.orElseThrow(() -> new RuntimeException("返回值为空")));
(6)ifPresent 方法
  • Optional 对象中有值,则进行相关操作
Optional<String> optional = Optional.ofNullable("jack");

optional.ifPresent(s -> {
    System.out.println(s + "Hello");
});
(7)map 方法
  • 将 Optional 对象中的值进行类型转换,如果值不存在,则抛出异常(java.util.NoSuchElementException)
Optional<String> numOptional = Optional.ofNullable("123");

Integer num = numOptional.map(s -> Integer.parseInt(s)).get();
System.out.println(num);

网站公告

今日签到

点亮在社区的每一天
去签到