文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Java JDK8新增Optional工具类怎么用

2023-06-20 14:27

关注

这篇文章主要为大家展示了“Java JDK8新增Optional工具类怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Java JDK8新增Optional工具类怎么用”这篇文章吧。

Optional

空指针异Optional常是导致Java应用程序失败的最常见原因。以前,为了解决空指针异常,Google公司著名的Guava项目引入了Optional类,Guava通过使用检查空值的方式来防止代码污染,它鼓励程序员写更干净的代码。受到Google Guava的启发,Optional类已经成为Java 8类库的一部分。Optional实际上是个容器:它可以保存类型T的值,或者仅仅保存null。Optional提供很多有用的方法,这样我们就不用显式进行空值检测。

1. 以前对null 的处理

@Test    public void test01(){        //String userName = "张三";        String userName = null;        if(userName != null){            System.out.println("字符串的长度:" + userName.length());        }else{            System.out.println("字符串为空");        }    }

2. Optional类

Optional是一个没有子类的工具类,Optional是一个可以为null的容器对象,它的主要作用就是为了避免Null检查,防止NullpointerException,

Java JDK8新增Optional工具类怎么用

3. Optional的基本使用

Optional对象的创建方式

    @Test    public void test02(){        // 第一种方式 通过of方法  of方法是不支持null的        Optional<String> op1 = Optional.of("zhangsan");        //Optional<Object> op2 = Optional.of(null);        // 第二种方式通过 ofNullable方法 支持null        Optional<String> op3 = Optional.ofNullable("lisi");        Optional<Object> op4 = Optional.ofNullable(null);        // 第三种方式 通过empty方法直接创建一个空的Optional对象        Optional<Object> op5 = Optional.empty();    }

4. Optional的常用方法

    @Test    public void test03(){        Optional<String> op1 = Optional.of("zhangsan");        Optional<String> op2 = Optional.empty();        // 获取Optional中的值        if(op1.isPresent()){            String s1 = op1.get();            System.out.println("用户名称:" +s1);        }        if(op2.isPresent()){            System.out.println(op2.get());        }else{            System.out.println("op2是一个空Optional对象");        }        String s3 = op1.orElse("李四");        System.out.println(s3);        String s4 = op2.orElse("王五");        System.out.println(s4);        String s5 = op2.orElseGet(()->{            return "Hello";        });        System.out.println(s5);    }
@Test    public void test04(){        Optional<String> op1 = Optional.of("zhangsan");        Optional<String> op2 = Optional.empty();        // 如果存在值 就做什么        op1.ifPresent(s-> System.out.println("有值:" +s));        op1.ifPresent(System.out::println);    }        @Test    public void test05(){        Person p = new Person("zhangsan",18);        Optional<Person> op = Optional.of(p);        String name = getNameForOptional(op);        System.out.println("name="+name);    }        public String getNameForOptional(Optional<Person> op){       if(op.isPresent()){           String msg = //op.map(p -> p.getName())                   op.map(Person::getName)                   //.map(p -> p.toUpperCase())                   .map(String::toUpperCase)                   .orElse("空值");           return msg;       }       return null;    }        public String getName(Person person){        if(person != null){            String name = person.getName();            if(name != null){                return name.toUpperCase();            }else{                return null;            }        }else{            return null;        }    }

以上是“Java JDK8新增Optional工具类怎么用”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网行业资讯频道!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯