首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

还在重复写空指针检查代码?考虑使用 Optional 吧!

这个异常潜伏在代码中,就像个遥控炸弹,不知道什么时候这个按钮会被突然按下(传入 null 对象)。 还记得刚入行程序员的时候,三天两头碰到空指针异常引发的 Bug,解决完一个,又在另一处碰到。...为了防止异常抛出,可以使用 Optional#isPresent 。这个方法将会判断内部是否存在对象实例,若存在则返回 true。...2.5、Optional#orElse 与 Optional#orElseThrow 当一个对象为 null 时,业务上通常可以设置一个默认值,从而使流程继续下去。...// 设置默认值 String name=companyOpt.orElse(new Company("Unknown")).getName(); // 抛出异常 String name=companyOpt.orElseThrow...2.6、Optional#map 与 Optional#flatMap 熟悉 Java8 Stream 同学的应该了解,Stream#map 方法可以将当前对象转化为另外一个对象, Optional#map

59040
您找到你想要的搜索结果了吗?
是的
没有找到

Java8新特性之空指针异常的克星Optional类

稍不留意,空指针异常就像幽灵一样出现了。 这篇文章我们来学习Java8是如何通过Optional类来避免空指针异常的。...orElseThrow获取Optional中的值 orElseThrow()方法与get()方法类似,当值为null时调用会抛出NullPointerException异常,但该方法可以指定抛出的异常类型...; 此时打印异常信息为: Optional.empty().orElseThrow(()-> new RuntimeException("请先关注公众号!"))....ifPresent((val)->{ System.out.println("欢迎关注" val); }); filter()方法过滤 filter()方法可用于判断Optional对象是否满足给定条件...Java8提倡函数式编程,新增的许多API都可以用函数式编程表示,Optional类也是其中之一。 小结 至此,Java8新特性相关的内容便完结了。

1.3K20

还在重复写空指针检查代码?考虑使用 Optional 吧!

为了防止异常抛出,可以使用 Optional#isPresent 。这个方法将会判断内部是否存在对象实例,若存在则返回 true。...3)Optional#ifPresent 通常情况下,空指针检查之后,如果对象不为空,将会进行下一步处理,比如打印该对象。...5)Optional#orElse 与 Optional#orElseThrow 当一个对象为 null 时,业务上通常可以设置一个默认值,从而使流程继续下去。...// 设置默认值 String name=companyOpt.orElse(new Company("Unknown")).getName(); // 抛出异常 String name=companyOpt.orElseThrow...6)Optional#map 与 Optional#flatMap 熟悉 Java8 Stream 同学的应该了解,Stream#map 方法可以将当前对象转化为另外一个对象, Optional#map

1K40

null校验的优美处理

// 这种方法无法体现返回是否可能为null的语义 T get(Integer id); 在java8中,提供了Optional类来包装对象,用这个Optional包装对象,我们可以体现返回是否可能为null...我们可以这样规定,如果方法返回的是对象,那么它的返回一定不为null;如果方法返回的是Optional对象,则表示方法返回结果可能存在null,需要做非null处理。...T get()返回不为null的实践一般是当接口为null时,抛出异常,这样就做到返回一定不为null了。...= null) { todo; } Optional提供了orElseThrowifPresent通过传入函数性接口来简化代码编写行数。...orElseThrow的作用是如果为空就抛出异常,相当于if(val==null) {throw execption},之前三行代码,现在只用一行;ifPresent的作用是如果不为空,执行xxx,也是优化了

1K11

Java新特性:Optional类

1.2、Java8之前的空指针异常判断 Java 在使用对象过程中,访问任何方法或属性都可能导致 NullPointerException: 例如我们通过以下方法,获取存在 student 对象中的 Age...1.3、Java8之后Optional的使用 当需要判断的量多时,此时的这些判断语句可能会导致代码臃肿冗余,为此 Java8 特意推出了 Optional 类来帮助我们去处理空指针异常。...get 如果该值存在,将该值用 Optional 封装返回,否则抛出一个 NoSuchElementException 异常 ifPresent 如果值存在,就执行使用该值的方法调用,否则什么也不做...如果有值则将其返回,否则返回一个默认值 orElseGet 如果有值则将其返回,否则返回一个由指定的 Supplier 接口生成的值 orElseThrow 如果有值则将其返回,否则抛出一个由指定的...extends X> exceptionSupplier) 方法,它和 get 方法非常类似,它们遭遇 Optional 对象为空时都会抛出一个异常,但是使用 orElseThrow 可以定制希望抛出的异常类型

20320
领券