import java.util.Optional;
public class optionalDemo {
public static void main(String[] args) {
demo();
}
public static void demo(){
//创建optional的方式,第3种更严谨
Optional optional = Optional.of("bin");
Optional optional2 = Optional.empty();
Optional optional3 = Optional.ofNullable("bin");//此处传入的为null就会调用empty()方法
//判断有无值,值存在返回true,否则返回false
boolean present1 = optional.isPresent();
System.out.println(present1);
boolean present2 = optional2.isPresent();
System.out.println(present2);
//获取容器中的值
System.out.println(optional.get());
//有值就按照定义的方法执行,否则就什么也不做
optional.ifPresent(v-> System.out.println("value:"+v));
//有值就返回值,否则返回一个固定的值
String isV1 = optional.orElse("无值");
System.out.println(isV1);
String isV2 = optional2.orElse("无值");
System.out.println(isV2);
//接受方法的方法的返回值
System.out.println(optional2.orElseGet(() -> "lsq"));
//有值就返回,否则就抛出异常
// try {
// optional2.orElseThrow(()->new Exception());
// } catch (Exception e) {
// e.printStackTrace();
// }
//map 映射后返回optional
Optional optional4 = optional.map((v) -> v.toUpperCase());
System.out.println(optional4.get());
//flatMap与map不同的是不会封装成optional
Optional optional5 = optional.flatMap((v) -> Optional.of(v.toUpperCase() + "123"));
System.out.println(optional5.get());
//filter 过滤
Optional optional6 = optional.filter((v)->v.length()>=4);
System.out.println(optional6.orElse("这个值的长度小于4"));
}
}