Optional.of()该方法的入参是一个非null值,如果该值为null,则抛出NullPointerException,不为Null则返回该值。
Optional.ofNullable()非Null时返回该值,为null时返回一个Optional.empty()
Optional.empty()通过构造方法返回一个空的Optional实例。
boolean isPresent()判断optional实例是否有值,没值为false,有值为true
ifPresentoptiona()l实例存在值时调用ifPresent中的内容
orElse,orElseGet两者的作用是当入参是null时,匹配自定义默认值
orElseThrow,当Optional中为空值时抛出异常
map 映射,用法同Stream
filter 过滤,用法同Stream
orElse,orElseGet的区别
区别:
orElse与orElseGet的区别是前者的入参是一个泛型T,后者是一个函数式方法的结果。
ofNullable中的值是null时,orElse/orElseGet中的内容会执行,否则不执行
package com.saiyou.test; import com.saiyou.entity.User; import org.apache.poi.hssf.record.UserSViewBegin; import java.util.Optional; /** * @author : lyn * 技术点 : * @description: * @date : 2022/1/2 17:41 */ public class OptionalTest { public static void main(String[] args) { test7(); } /** * Optional.of * 该方法的入参是一个非null值,如果该值为null,则抛出NullPointerException,不为Null则返回该值。 */ private static void test1() { // Optional.of(null); //入参为null时抛出NullPointerException Optional<String> result = Optional.of("value"); System.out.println(result.get()); //非null时返回该值value } /** * Optional.ofNullable * 非Null时返回该值,为null时返回一个Optional.empty() */ private static void test2() { Optional<Object> result = Optional.ofNullable(null); //为null时返回一个Optional.empty() } /** * Optional.empty() * 通过构造方法返回一个空的Optional实例。 */ private static void test3() { //通过 boolean isPresent()判断optional实例是否有值,没值为false,有值为true Optional.empty().isPresent(); //没值为false System.out.println(Optional.ofNullable("value").isPresent()); //有值为true } /** * Optional.ifPresent * 实例存在值时调用ifPresent中的内容 */ private static void test4() { //Optional.empty().ifPresent(value-> System.out.println(value)); //optional没值时不执行 ifPresent()里的代码 Optional.ofNullable("value").ifPresent(System.out::println); //有值时执行 结果:value } /** * orElse,orElseGet两者的作用是当入参是null时,匹配自定义默认值 * 区别: * orElse与orElseGet的区别是前者的入参是一个泛型T,后者是一个函数式方法的结果。 * ofNullable中的值是null时,orElse/orElseGet中的代码会执行 * 否则不执行 */ private static void test5() { String str = null; String str1 = "张三"; str = Optional.ofNullable(str).orElse(str1); String str2 = "李四"; str = Optional.ofNullable(str).orElse(str2); System.out.println(str); //结果:张三 str = null; str = Optional.ofNullable(str).orElseGet(() -> str2); System.out.println(str); //结果:李四 } /** * orElseThrow * 当Optional中为空值时抛出异常 */ private static void test6() { String value = "value"; value = Optional.ofNullable(value).orElseThrow(() -> new RuntimeException("参数为空!")); System.out.println(value); //结果: value } /** * map 映射,用法同Stream * filter 过滤,用法同Stream */ private static void test7() { User user = new User(); user.setName("张三"); Optional.ofNullable(user).map(User::getName).ifPresent(System.out::println); //结果: 张三 } }
https://blog.csdn.net/weixin_42313773/article/details/118192675
https://bbs.csdn.net/skill/java/java-200100112c1048058e39283469c5a1c2