【Java8新特性】- Optional应用

1|0Java8新特性 - Optional应用

😄生命不息,写作不止
🔥 继续踏上学习之路,学之分享笔记
👊 总有一天我也能像各位大佬一样
🏆 一个有梦有戏的人 @怒放吧德德
🌝分享学习心得,欢迎指正,大家一起学习成长!

image

1|1简介

Optional 类是一个可以为null的容器对象。如果值存在则isPresent()方法会返回true,调用get()方法会返回该对象。
Optional 是个容器:它可以保存类型T的值,或者仅仅保存null。Optional提供很多有用的方法,这样我们就不用显式进行空值检测。
Optional 类的引入很好的解决空指针异常。

1|2Optional判断是否为空

optional提供了两种方法,一个是ofNullable(args),这个是可以传递空对象,并且不会出现空指针异常;另一个是of(args),这个一旦传递空对象,就会报空指针异常。

public static void main(String[] args) { Integer integer = null; Optional<Integer> optionalInteger = Optional.ofNullable(integer); Optional.of(integer); }

在ofNullable方法是不会报出空指针,而在of方法时,对象为空则会空指针异常。
image.png

通过Optional的ofNullable可以判断对象是否为空,并且能够返回一个Optional的对象,这个对象可以通过get()方法来得到相应的类型,并且二者的hashcode是一致的。

Student student = new Student("lyd", 99); Optional<Student> optionalInteger = Optional.ofNullable(student); Student i = optionalInteger.get(); System.out.println("原本的hashcode: " + student.hashCode()); System.out.println("Optional的hashcode: " + i.hashCode());

结果:
image.png

通过Optional.ofNullable(student).isPresent() 来判空,isPresent结果为true表示不为空,isPresent返回为false表示为空。

1|3Optional设定默认值

Option提供了可以设置默认值的方法,可以令为空的对象初始化默认值。

public static void main(String[] args) { Integer num = null; Integer number = 18; Integer orElse = Optional.ofNullable(num).orElse(12); Integer anElse = Optional.ofNullable(number).orElse(12); System.out.println("orElse: " + orElse); System.out.println("anElse: " + anElse); }

结果输出

orElse: 12 anElse: 18

1|4Optional过滤

optional可以实现参数过滤,可以自己重写过滤规则。与Stream流过滤一样,也是通过实现匿名内部类new Predicate得到。

public static void main(String[] args) { Integer n = 18; Optional<Integer> num = Optional.ofNullable(n); Integer integer = num.filter(number -> number > 5).get(); System.out.println(integer); }

1|5类方法

image.png

工作繁忙也需要学习。

👍创作不易,如有错误请指正,感谢观看!记得点赞哦!👍


__EOF__

本文作者怒放吧德德
本文链接https://www.cnblogs.com/lyd-code/p/16783031.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   怒放吧德德  阅读(288)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示