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. ...
随机推荐
- Python基础16
反复练习决策树案例(保险) 将老师的思路与解题过程, 自己的心得, 中间遇到的问题.陷阱.解决办法, 写出来. 总之,将这个案例消化成自己的东西!
- 续~ES6 新语法 (symbol、set集合、 数组对象的filter(),reduce(),weakset(),map()方法)
一.symbol 回顾数据类型: 基本类型(原始类型): String Number Boolean Undifined Null Symbol 引用类型: Objects 1.1 创建symbol ...
- java--Proreties
Prorerties /* * Properties,内存与文件信息交互 * 表示了一个持久的属性集 * * 构造方法: * Properties() * * */ //简单使用 创建,添加,遍历, ...
- Seata为什么效率高
1. Seata为什么效率高 1.1. 应对面试官的解释 Seata的解决方案是两阶段提交的升级版,传统两阶段提交资源管理器(RM)放在数据库端,由数据库管理,需要数据库支持XA协议. 而Seata把 ...
- vue中输入框只能输入数字
方案1:增加自定义指令 自定义指令写法: directives: { numberOnly: { bind(el) { ...
- Scrum冲刺第一篇
一.各个成员在 Alpha 阶段认领的任务 负责人和协作者 任务内容 陈嘉欣 设计编码规范 邓镇港 UI设计 肖烈涛 数据库设计 林德泽 设计测试计划 余晓东 用户注册登陆验证模块 陈嘉欣 余晓东 林 ...
- 三层架构介绍和MVC设计模型介绍
springmvc是什么? Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层 进行职责解耦,基于请 ...
- c++ win32下窗口的最小化到托盘以及还原
框架是用visual studio创建的win32控制台模板,然后自己添加最小化及还原部分代码. 需要额外包含的头文件: #include <shellapi.h> #include &l ...
- 201777010217-金云馨《面向对象程序设计(java)》第十三周学习
项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p ...
- 201777010217-金云馨《面向对象程序设计Java》第八周学习总结
项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p ...