optional类的使用
程序员文章站
2022-03-04 10:51:38
...
概述
它是java.util
包下的一个类,是一个包裹对象的容器,它可以包裹null或非null的对象。如果你要获取容器中的对象,需要使用get()
方法。它的出现是为我们解决空指针异常的,以前我们写代码如果不进行if
判断,会经常出现异常。现在有了他就会很优雅。因为它本身就是个对象,不管放进去的对象为不为null,始终不会返回null,所以你也不需要在你的业务流程中进行一大堆的判断,避免了程序运行时的空指针异常。
Optional类是Java8为了解决null值判断问题,借鉴google guava类库的Optional类而引入的一个同名Optional类,使用Optional类可以避免显式的null值判断(null的防御性检查),避免null导致的NPE(NullPointerException)
使用
isPresent
一般不推荐使用,因为这种用法不但没有减少null的防御性检查,而且增加了Optional包装的过程,违背了Optional设计的初衷
public static String getGender(Student student)
{
Optional<Student> stuOpt = Optional.ofNullable(student);
if(stuOpt.isPresent())
{
return stuOpt.get().getGender();
}
return "Unkown";
}
ifPresent
判断是否为空,当不为空时,结合lambda表达式使用,运行相应的方法,但是返回值为空
public static void printName(Student student)
{
Optional.ofNullable(student).ifPresent(u -> System.out.println("The student name is : " + u.getName()));
}
filter
完成对符合相应条件对象的筛选
public static void filterAge(Student student)
{
Optional.ofNullable(student).filter( u -> u.getAge() > 18).ifPresent(u -> System.out.println("The student age is more than 18."));
}
map
将对象进行操作后,可返回另一个经optional包装的对象
public static Optional<Integer> getAge(Student student)
{
return Optional.ofNullable(student).map(u -> u.getAge());
}
参考文档
上一篇: Java8 Optional
下一篇: 函数类方法的使用(optional语法)
推荐阅读
-
使用 Ocelot 匹配路由的方法匹配路由
-
怎么计算C++继承、虚继承、虚函数类的大小?
-
Android中的全局变量与局部变量使用小结
-
C++类对象的返回与引用实例讲解
-
[日常] 使用TCPDUMP和Ethereal抓包分析HTTP请求中的异常情况
-
调试 ASP 中使用的 Visual Basic COM 组件
-
C#中使用Path、Directory、Split、Substring实现对文件路径和文件名的常用操作实例
-
DevExpress的GridControl的使用以及怎样添加列和绑定数据源
-
无法访问,您可能没有权限使用网络资源的解决方法
-
Bandicam如何录制?屏幕录制矩形窗口的使用教程