Optional是什么

Optional类是Java中的一个泛型类,引入自Java8版本,它用于表示一个可能为空的值,并提供了一些便捷的方法来处理这种情况,以避免空指针异常。
是一种优雅地处理可能为空的值的方式
可以包装任意类型的值,包括引用类型和基本类型的包装类

Optional类常见方法

可以通过调用Optional.of(value)来创建一个包含非空值的Optional实例

public static <T> Optional<T> of(T value) {
    return new Optional<>(value);
}
为value创建一个Optional对象,如果value为空则 会报出NullPointerException异常。
Optional<String> optional = Optional.of("Hello");
//输出Hello
System.out.println(optional.get())

可以通过调用Optional.empty()来创建一个空的Optional实例

public static<T> Optional<T> empty() {
    @SuppressWarnings("unchecked")
    Optional<T> t = (Optional<T>) EMPTY;
    return t;
}
返回了一个已经创建好的空的Optional实例,这样我们就可以方便地使用它来表示空值。
Optional<String> optional = Optional.empty();
//输出false
System.out.println(optional.isPresent());

可以通过调用Optional.ofNullable(value)来创建一个Optional实例,如果value为null,则返回空的Optional实例,否则返回包含该值的Optional实例

public static <T> Optional<T> ofNullable(T value) {
    return value == null ? empty() : of(value);
}
为value创建一个Optional对象,但可以允许value为null值。
String value =null;
Optional<String> optional = Optional.ofNullable(value);
//输出false
System.out.println(optional.isPresent());

可以使用isPresent()方法来检查Optional实例是否包含值

public boolean isPresent() {
    return value != null;
}
判断当前value是否为null,如果不为null则返回true,否则false。

Optional<String> optional = Optional.of("Hello");
System.out.println(optional.isPresent()); // 输出: true

通过使用ifPresent方法,可以在Optional实例包含值时进行特定的操作,而无需手动进行空值的判断。这可以使代码更加简洁和可读。


如果不为null值就执行函数式接口的内容。

public void ifPresent(Consumer<? super T> consumer) {
    if (value != null)
        consumer.accept(value);
}
Optional<String> optional = Optional.of("Hello");
optional.ifPresent(value -> System.out.println("Value: " + value));
// 输出: Value: Hello

Optional<String> emptyOptional = Optional.empty();
emptyOptional.ifPresent(value -> System.out.println("Value: " + value));
// 不会输出任何内容

可以使用get()方法来获取Optional实例中的值,但需要先通过isPresent()方法进行判断,以避免空指针异常

public T get() {
    if (value == null) {
        throw new NoSuchElementException("No value present");
    }
    return value;
}
返回当前的值,如果为空则报异常。
Optional<String> optional = Optional.of("Hello");
if (optional.isPresent()) {
    System.out.println(optional.get()); // 输出: Hello
}

可以使用orElse(defaultValue)方法来获取Optional实例中的值,如果Optional实例为空,则返回默认值

public T orElse(T other) {
    return value != null ? value : other;
}
返回当前值,如果为null则返回other。
Optional<String> optional = Optional.empty();
String value = optional.orElse("Default");
System.out.println(value); // 输出: Default

....

posted @ 2024-01-29 16:20  狗狗没有坏心眼  阅读(15)  评论(0编辑  收藏  举报