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));
}
}
标签:Java,String,java,System,II,import,Optional,startsWithQQQ
From: https://blog.csdn.net/qq_36324341/article/details/144886048