orElseGet是Java8 Optional类中的一个方法,用于在Optional对象为空时提供一个备用值。与orElse方法不同的是,orElseGet方法只有在Optional对象为空时才会执行备用值的计算,而orElse方法无论Optional对象是否为空都会执行备用值的计算。下面是一个使用orElseGet方法的例子:
Optional<String> optional = Optional.ofNullable(null);
String result = optional.orElseGet(() -> "备用值");
System.out.println(result); // 输出:备用值`
在上面的例子中,由于Optional对象为空,所以orElseGet方法会执行备用值的计算,最终返回了备用值"备用值"。
Java8 Optional类还有以下常用方法:
orElse(T other):如果Optional对象中存在值,则返回该值,否则返回other。
orElseGet(Supplier<? extends T> other):如果Optional对象中存在值,则返回该值,否则返回由Supplier接口实现提供的值。
orElseThrow(Supplier<? extends X> exceptionSupplier):如果Optional对象中存在值,则返回该值,否则抛出由Supplier接口实现提供的异常。
filter(Predicate<? super T> predicate):如果Optional对象中存在值并且该值满足Predicate接口实现提供的条件,则返回该Optional对象,否则返回一个空的Optional对象。
map(Function<? super T, ? extends U> mapper):如果Optional对象中存在值,则将该值传递给Function接口实现提供的方法进行转换,并返回一个包含转换后值的Optional对象,否则返回一个空的Optional对象。
flatMap(Function<? super T, ? extends Optional<? extends U>> mapper):如果Optional对象中存在值,则将该值传递给Function接口实现提供的方法进行转换,并返回一个包含转换后值的Optional对象,否则返回一个空的Optional对象。
/**
* Description: of 和 ofNullable 方法的区别
* <br> of 不允许为null ,否则会抛出 NPE
* <br> ofNullable ,允许为 null
* @return void
* @version v1.0
* @author wu
* @date 2022/11/23 10:14
*/
@Test
public void ofNullableTest() throws Exception {
final Optional<String> s = Optional.of("111");
final Optional<String> s1 = Optional.ofNullable("222");
System.out.println(s);
System.out.println(s1);
final Optional<Object> s3 = Optional.ofNullable(null);
System.out.println(s3);
final Optional<String> s4 = Optional.of(null);
System.out.println(s4);
}
输出结果:
Optional[111]
Optional[222]
Optional.empty
java.lang.NullPointerException
原文链接:https://blog.csdn.net/HaHa_Sir/article/details/128669270
网友评论