JDK8中Optional简介说明

戚薇 Java教程 发布时间:2023-06-05 16:47:02 阅读数:5977 1
下文笔者讲述Optional简介说明,如下所示

Optional简介

 
Jdk8中对外提供Optional
   一个可包含null值容器对象
   可用于替换xx != null判断

Optional中常用方法

of

public static <T> Optional<T> of(T value) {
    return new Optional<>(value);
}

为value创建一个Optional对象
 当value为空时,会报NullPointerException异常

ofNullable

public static <T> Optional<T> ofNullable(T value) {
    return value == null ? empty() : of(value);
}

为value创建一个Optional对象
   但可允许value为null值

isPresent

public boolean isPresent() {
    return value != null;
}

判断当前value是否为null
   如果不为null则返回true
    否则false

ifPresent

当不为null值就执行函数式接口的内容

public void ifPresent(Consumer<? super T> consumer) {
    if (value != null)
        consumer.accept(value);
}

get

public T get() {
    if (value == null) {
        throw new NoSuchElementException("No value present");
    }
    return value;
}

返回当前的值
  如果为空则报异常

orElse

返回当前值
  当为null则返回other。

public T orElse(T other) {
    return value != null ? value : other;
}

orElseGet

orElseGet和orElse类似
   orElseGet支持函数式接口来生成other值

public T orElseGet(Supplier<? extends T> other) {
    return value != null ? value : other.get();
}

orElseThrow

当有值则返回
   没有则用函数式接口抛出生成的异常

public <X extends Throwable> T orElseThrow(Supplier<? extends X> exceptionSupplier) throws X {
    if (value != null) {
        return value;
    } else {
        throw exceptionSupplier.get();
    }
}

Optional示例

public static void main(String[] args) {
    testOf();
    testNullable();
}


private static void testNullable() {
    User user = null;
    User maomao = new User("maomao",22);
    User gougou = new User("gougou",16);

    System.out.println(Optional.ofNullable(user).orElse(maomao));
    System.out.println(Optional.ofNullable(maomao).get());
    System.out.println(Optional.ofNullable(gougou).orElse(maomao));
    System.out.println(Optional.ofNullable(user).orElseGet(() -> maomao));

    System.out.println();
}

private static void testOf() {
    try {
        User user1 = new User();
        Optional<User> userOptional1 = Optional.of(user1);
        if (userOptional1.isPresent()) {
            System.out.println("user is not null");
        }

        User user2 = null;
        Optional<User> userOptional2 = Optional.of(user2);//NullPointerException
        if (userOptional2.isPresent()) {
            System.out.println("user is not null");
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    System.out.println();
}
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaCourse/202306/6716.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者