Java8 新特性 Optional 类
Optional 类的简介
Optional类的是来自谷歌Guava的启发,然后就加入到Java8新特性中去了。Optional类主要就是为子决解价值亿万的错误,空指针异常。
Optional类其实就是一个可选值的包装类,说明这个类即可以有空值,也可以有对象。
Optional 简单使用
这个类也会报空指针异常:of(),empty()
@Test
public void OptionalTest() {
//报:NullPointerException
//of()方法,是在传入null的时候,报错。
Optional<String> gg = Optional.of(null);
System.out.println(gg.get());
//创建一个空的Optional类
Optional<Object> empty = Optional.empty();
//报:NullPointerException
//empty取的时候,才会报错
System.out.println(empty.get());
}
ofNullable()方法的使用。
@Test
public void OptionalTest2() {
//创建一个对象
//两个都可以用
//都不会报空指针异常
//Sku sku = null;
Sku sku = new Sku();
//如果不确定是不是空的时候可以用这个方法
Optional<Sku> optionalSku = Optional.ofNullable(sku);
//判断optional里面的值是不是空的
if (optionalSku.isPresent()) {
//如果不是空的就可以取出来
Sku sku1 = optionalSku.get();
System.out.println(sku1);
//如果是null的时候,不运行
//如果不是null的时候,会运行,输出一个对象的地址
}
}
orElse()的使用的方法
@Test
public void optionalTest3() {
Sku sku = new Sku();
//getSkuName()没有值。
Optional<String> optionalSku = Optional.ofNullable(sku.getSkuName());
//上面getSkuName()里面没有值的时候,才输出orElse的值。
String gg = optionalSku.orElse("上面的getSkuName里面没有值!");
System.out.println(gg);
//输出:上面的getSkuName里面没有值
}
ifPresent()的使用方法
@Test
public void optionalTest4() {
Sku sku = new Sku();
//getSkuName()没有值。
Optional<String> optionalSku = Optional.ofNullable(sku.getSkuName());
//如果有值的时候,可以直接输出,但是如果没有值的时候,不会输出,并且不会报错。
optionalSku.ifPresent(System.out::println);
}
//无输出
更多的Optional类的使用:
细节决定成败!
个人愚见,如有不对,恳请扶正!
Java8 新特性 Optional 类的更多相关文章
- Java8新特性——Optional类的使用(有效的避免空指针异常)
OPtional类的使用 概述 到目前为止,臭名昭著的空指针异常是导致Java应用程序失败的最常见原因.以前,为了解决空指针异常,Google公司著名的Guava项目引入了Optional类,Guav ...
- JDK1.8新特性——Optional类
JDK1.8新特性——Optional类 摘要:本文主要学习了JDK1.8新增加的Optional类. 部分内容来自以下博客: https://www.cnblogs.com/1ning/p/9140 ...
- Java8新特性——Optional
前言 在开发中,我们常常需要对一个引用进行判空以防止空指针异常的出现.Java8引入了Optional类,为的就是优雅地处理判空等问题.现在也有很多类库在使用Optional封装返回值,比如Sprin ...
- JAVA8新特性Optional,非空判断
Optional java 的 NPE(Null Pointer Exception)所谓的空指针异常搞的头昏脑涨, 有大佬说过 "防止 NPE,是程序员的基本修养." 但是修养归 ...
- Java8新特性--Optional
Java 8引入了一个新的Optional类.Optional类的Javadoc描述如下: 这是一个可以为null的容器对象.如果值存在则isPresent()方法会返回true,调用get()方法会 ...
- java8 新特性 -Optional的常见用法
1. Optional 一. 简介 Opitonal是java8引入的一个新类,目的是为了解决空指针异常问题.本质上,这是一个包含有可选值的包装类,这意味着 Optional 类既可以含有对象也可以为 ...
- Java8新特性Optional、接口中的默认方法与静态方法
Optional Optional 类(java.util.Optional) 是一个容器类,代表一个值存在或不存在,原来用 null 表示一个值不存在,现在 Optional 可以更好的表达这个概念 ...
- Java8新特性 - Optional容器类
Optional 类(java.util.Optional) 是一个容器类,代表一个值存在或不存在,原来用null 表示一个值不存在,现在Optional 可以更好的表达这个概念.并且可以避免空指针异 ...
- java8 新特性 Optional容器类
public class Godness { private String name; public Godness() { } public Godness(String name) { this. ...
随机推荐
- asp.net面试题总结1(未完待续。。。。)
1.MVC中的TempData\ViewBag\ViewData区别? 答:页面对象传值,有这三种对象可以传. Temp:临时的 Bag:袋子 (1) TempData 保存在Session中,C ...
- App_Code下类无法引用问题
App_Code 下创建的.cs文件仅仅是“内容”不是代码.设置文件为“编译”就可正常引用.
- putty连接centos慢
用的vmware下的centos minimal镜像,开发时,用putty连接很慢,一分多钟, 解决方案: 禁用GSSAPI认证有两个方式:客户端和服务端 直接配置你ssh客户端的文件/etc/ssh ...
- Linux打包和压缩——管理打包和压缩的命令
Linux打包和压缩——管理打包和压缩的命令 摘要:本文主要学习了Linux的打包命令和压缩命令. tar命令 tar命令可以用来进行打包和解打包,压缩和解压缩. 基本语法 打包和压缩的语法: tar ...
- Mac下多版本pip共存
Mac下多版本pip共存 来自于官方的解释, pip是python包管理工具, 该工具提供了对python包的查找, 下载, 安装, 卸载等功能python第三方工具包多数依赖于pip进行安装, 如 ...
- 快速、优雅的前端IDE之H-builder-X
为什么介绍的是HBuidler-X而不是Hbuilder HX是全新的一个软件,它抛弃了eclipse架构,使用C++为基础架构.HX目前还不能完全替代HBuilder.但在markdown记事的 ...
- 构建根文件系统之init进程分析
busybox是ls.cp等命令的集合. 执行ls时,实际上是执行了busybox ls 执行cp时,实际上是执行了busybox cp 分析init程序之前,再让我们回想一下我们的目标:u-boot ...
- ssh密钥批量分发
#################以下所有的命令脚本都是在centos7系统上实现,centos6略有不同 客户端使用公钥连接服务器的步骤: 提起ssh我们就能想到的是远程连接,平时我们都是通过密码来 ...
- 201871010125-王玉江《面向对象程序设计(java)》第十五周学习总结
项目 内容 这个作业属于哪个课程 <任课教师博客主页链接> https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 <作业链接地址> ht ...
- 权限维持:Win2008以上的iis
参考文章:https://mp.weixin.qq.com/s/z1d3yvp14GWakyonTh_b8A 浅谈原理 在 .Net 中,HttpModule 其实就是实现了 IHttpModule ...