《Java核心技术II》获取Optional值

Optional类型

Optional对象是一种包装器对象,要么包装类型T的对象(称为存在的),要么没有包装任何对象。

获取Optional值

有效的使用它要用这样的方法

它在值不存在的情况下会产生一个可替代物,而只有值在存在的时候才会使用这个值。

策略一:没有任何 匹配时,使用默认值,可能是空字符串。

String result = optionalString.orElse("");

策略二:调用代码来计算默认值

String result = optionalString.orElseGet(()->System.getProperty(myapp.default));

策略三:可以在没有任何值时抛出异常

String result = optionalString.orElseThrow(IllegalStateException::new);

综合案例OptionalOrElse
package streams.optional;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.List;
import java.util.Optional;

public class OptionalOrElse {

    public static void main(String[] args) throws IOException {
        //Path相对路径是指JavaCore2
        var contents = Files.readString(Path.of("./resources/alice.txt"));
        List<String> words = List.of(contents.split("\\PL+"));
        //orElse
        Optional<String> startsWithQQQ = words.stream().filter(s->s.startsWith("QQQ")).findFirst();
        System.out.println("startsWithQQQ: "+startsWithQQQ.orElse(""));
        //orElseGet
        System.out.println("startsWithQQQorElseGet: "+startsWithQQQ.orElseGet(() -> System.getProperty("java.home")));
        //orElseThrow
        System.out.println("startsWithQQQorElseThrow: "+startsWithQQQ.orElseThrow(IllegalArgumentException::new));
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿立聊全栈

有作用的,有闲钱的支持一点。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值