Optional的常用Api
2022/1/2 23:13:11
本文主要是介绍Optional的常用Api,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Optional的常用Api
01 Api
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中的内容会执行,否则不执行
02 测试用例
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); //结果: 张三 } }
03 资料参考
https://blog.csdn.net/weixin_42313773/article/details/118192675
https://bbs.csdn.net/skill/java/java-200100112c1048058e39283469c5a1c2
这篇关于Optional的常用Api的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-26消息中间件源码剖析教程
- 2024-11-26JAVA语音识别项目资料的收集与应用
- 2024-11-26Java语音识别项目资料:入门级教程与实战指南
- 2024-11-26SpringAI:Java 开发的智能新利器
- 2024-11-26Java云原生资料:新手入门教程与实战指南
- 2024-11-26JAVA云原生资料入门教程
- 2024-11-26Mybatis官方生成器资料详解与应用教程
- 2024-11-26Mybatis一级缓存资料详解与实战教程
- 2024-11-26Mybatis一级缓存资料详解:新手快速入门
- 2024-11-26SpringBoot3+JDK17搭建后端资料详尽教程