jdk8 optional

Wesley13
• 阅读 782

Optional 是jdk1.8(新命名方式应该说 JDK8)推出的解决空指针问题的类,解决空指针这个说法不是准确,应该说是方便简洁处理空指针问题吧。毕竟jdk8推出了很多新语言使java语言编写程序更加简洁。 参考:https://www.jianshu.com/p/d81a5f7c9c4e

下边来看下Optional类的基本使用吧:

  • 场景一: 返回Optional
  1. 返回非空对象 Optional.of(result)
  2. 返回可能为空的对象 Optional.ofNullable(student) Optional a = Optional.ofNullable(value1);
  3. 当对象为空时抛出异常 Optional.of(value2);
  • 场景二:接受Optional对象,并作出理
  1. 直接返回对象,如果对象为空则返回默认值 Integer a = null; Integer B = new Integer(1); Integer value1 = a.orElse(new Integer(0)); Integer value2 = b.orElse(new Integer(0));

  2. 对结果做处理后返回 比如查询数据库后返回一个对象,这个对象可能为空,也可能存在。存在的情况下,我们返回名称。对象为空的情况下,我们返回空字符串。 String get Name(){ Optional o1= findById(String id); return o1.map(value->value.getName).orElse(""); }

3.判断对象是否存在 ifPresent() 。 若存在返回true,否则false。 4.根据对象是否存在做处理 还可以接受一个消费接口函数入参来处理数据。 ifPresent()方法的源码: public void ifPresent(Consumer<? super T> consumer) { if (value != null) consumer.accept(value); } 使用: public static void printName(Student student) { Optional.ofNullable(student).ifPresent(u -> System.out.println("The student name is : " + u.getName())); }

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Wesley13 Wesley13
3年前
java,poi读取excel单元格为空的数据,出现空指针异常:java.lang.NullPointerException
java,poi读取excel单元格为空的数据,出现空指针异常:java.lang.NullPointerException参考文章:(1)java,poi读取excel单元格为空的数据,出现空指针异常:java.lang.NullPointerException(https://www.oschina.net/action/GoToLi
待兔 待兔
3年前
Java8 几个很好用的方法,真的很香
JDK8应该是Java中最坚挺一个版本,这个版本新增很多特性,让我们开发起来多了很多便利。不过最近Review项目代码的时候发现,虽然很多项目工程已经使用了JDK8,但是工程代码却很少使用到JDK8新特性、新方法。如果单从代码正确性上来说,老方式写法写当然没有什么问题,那唯一的缺点其实就是代码行数比较多,比较繁琐。那同样的需求,使
Wesley13 Wesley13
3年前
Java日期时间API系列31
  时间戳是指格林威治时间1970年01月01日00时00分00秒起至现在的总毫秒数,是所有时间的基础,其他时间可以通过时间戳转换得到。Java中本来已经有相关获取时间戳的方法,Java8后增加新的类Instant等专用于处理时间戳问题。 1获取时间戳的方法和性能对比1.1获取时间戳方法Java8以前
Easter79 Easter79
3年前
SpringBoot自定义序列化的使用方式
场景及需求:项目接入了SpringBoot开发,现在需求是服务端接口返回的字段如果为空,那么自动转为空字符串。例如:\    {        "id":1,        "name":null    },    {        "id":2,        "name":"x
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Wesley13 Wesley13
3年前
Java日常开发的21个坑,你踩过几个?
前言最近看了极客时间的《Java业务开发常见错误100例》,再结合平时踩的一些代码坑,写写总结,希望对大家有帮助,感谢阅读~1\.六类典型空指针问题包装类型的空指针问题级联调用的空指针问题Equals方法左边的空指针问题ConcurrentHashMap这样的
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
11个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这