- Optional:方便做空值判断,不需要写很长的if-else
Optional.of() :创建值不为空的Optional对象
Optional.ofNullable():创建值可能为空的Optional对象
get():获取Optional内部的值
isPresent():判断值是否存在,返回boolean值
filter():元素过滤
ifPresent():方法接受一个Consumer对象(消费函数),如果包装对象的值非空,运行Consumer对象的accept()方法
例如:Optional.ofNullable(testClass).ifPresent((e) -> {
System.out.println("有结果");
});
map():map()方法的参数为Function(函数式接口)对象,map()方法将Optional中的包装对象用Function函数进行运算,并包装成新的Optional对象(包装对象的类型可能改变)
flatMap():跟map()方法不同的是,入参Function函数的返回值类型为Optional类型,而不是U类型,这样flatMap()能将一个二维的Optional对象映射成一个一维的对象。即如果存在Optional<Optional<String>>结构,在map中get()的结果是Optional<String>,而flatMap的get()结果String
orElse():如果包装对象值非空,返回包装对象值,否则返回入参other的值(默认值)
orElseGet():orElseGet()方法与orElse()方法类似,区别在于orElseGet()方法的入参为一个Supplier对象,用Supplier对象的get()方法的返回值作为默认值
orElseThrow():orElseThrow()方法其实与orElseGet()方法非常相似了,入参都是Supplier对象,只不过orElseThrow()的Supplier对象必须返回一个Throwable异常,并在orElseThrow()中将异常抛出