Optional 的基本用法
参考:
https://www.cnblogs.com/xingzc/p/5778090.html
http://www.runoob.com/java/java8-optional-class.html
| empty | static <T> Optional<T> empty() 返回空的 Optional 实例。 | 
| equals | boolean equals(Object obj) 判断其他对象是否等于 Optional。 | 
| filter | Optional<T> filter(Predicate<? super <T> predicate) 如果值存在,并且这个值匹配给定的 predicate,返回一个Optional用以描述这个值,否则返回一个空的Optional。 | 
| flatMap | <U> Optional<U> flatMap(Function<? super T,Optional<U>> mapper) 如果值存在,返回基于Optional包含的映射方法的值,否则返回一个空的Optional | 
| get | T get() 如果在这个Optional中包含这个值,返回值,否则抛出异常:NoSuchElementException | 
| hashCode | int hashCode() 返回存在值的哈希码,如果值不存在 返回 0。 | 
| ifPresent | void ifPresent(Consumer<? super T> consumer) 如果值存在则使用该值调用 consumer , 否则不做任何事情。 | 
| isPresent | boolean isPresent() 如果值存在则方法会返回true,否则返回 false。 | 
| map | <U>Optional<U> map(Function<? super T,? extends U> mapper) 如果存在该值,提供的映射方法,如果返回非null,返回一个Optional描述结果。 | 
| of | static <T> Optional<T> of(T value) 返回一个指定非null值的Optional。 | 
| ofNullable | static <T> Optional<T> ofNullable(T value) 如果为非空,返回 Optional 描述的指定值,否则返回空的 Optional。 | 
| orElse | T orElse(T other) 如果存在该值,返回值, 否则返回 other。 | 
| orElseGet | T orElseGet(Supplier<? extends T> other) 如果存在该值,返回值, 否则触发 other,并返回 other 调用的结果。 | 
| orElseThrow | <X extends Throwable> T orElseThrow(Supplier<? extends X> exceptionSupplier) 如果存在该值,返回包含的值,否则抛出由 Supplier 继承的异常 | 
| toString | String toString() 返回一个Optional的非空字符串,用来调试 | 
Optional 可以解决空指针异常, 但是, 如果使用不到, 反而会引起更多的问题呢.
比如get 方法, 就可以出现NoSuchElementException , 这就不仅仅是null 的麻烦了, 而是直接出现了 npe, 麻蛋.
java.util.NoSuchElementException: No value present
at java.util.Optional.get(Optional.java:135)
null 有时候是无法避免的, 怎么办? 进行isPresent 判断吗? 感觉更加麻烦了... 这样吧: orElse(null)
Optional 的基本用法的更多相关文章
- java8 新特性 -Optional的常见用法
		1. Optional 一. 简介 Opitonal是java8引入的一个新类,目的是为了解决空指针异常问题.本质上,这是一个包含有可选值的包装类,这意味着 Optional 类既可以含有对象也可以为 ... 
- 【原创】JAVA8之妙用Optional解决NPE问题
		引言 在文章的开头,先说下NPE问题,NPE问题就是,我们在开发中经常碰到的NullPointerException.假设我们有两个类,他们的UML类图如下图所示 在这种情况下,有如下代码 user. ... 
- c++11实现c++14的optional
		c++14中将包含一个std::optional类,它的功能和用法和boost的optional类似.optional<T>内部存储空间可能存储了T类型的值也可能没有存储T类型的值,只有当 ... 
- Java8新特性Optional、接口中的默认方法与静态方法
		Optional Optional 类(java.util.Optional) 是一个容器类,代表一个值存在或不存在,原来用 null 表示一个值不存在,现在 Optional 可以更好的表达这个概念 ... 
- Java 8 Optional类使用的实践经验
		前言 Java中空指针异常(NPE)一直是令开发者头疼的问题.Java 8引入了一个新的Optional类,使用该类可以尽可能地防止出现空指针异常. Optional 类是一个可以为null的容器对象 ... 
- Java8 如何正确使用 Optional
		原文出处:https://blog.kaaass.net/archives/764 Optional是Java8提供的为了解决null安全问题的一个API.善用Optional可以使我们代码中很多繁琐 ... 
- java.util.Optional学习笔记
		java.util.Optional是Java 8新增的类,作为一个持有实例的容器类,可以帮我们把判空的代码写得更优雅,并且该类还提供了一些实用的api,官方文档在这里,接下来我们通过实战来学习吧: ... 
- Java8新特性——Optional
		前言 在开发中,我们常常需要对一个引用进行判空以防止空指针异常的出现.Java8引入了Optional类,为的就是优雅地处理判空等问题.现在也有很多类库在使用Optional封装返回值,比如Sprin ... 
- Java 8新特性(三):Optional类
		在上一篇介绍Stream流式数据处理的文章中提到了Optional类,这是Java 8新增的一个类,用以解决程序中常见的NullPointerException异常问题.本篇文章将详细介绍Option ... 
随机推荐
- 高级数据类型--字典(dict)
			一.字典介绍 dict(字典) 是 除列表以外 Python 之中 最灵活 的数据类型.字典同样可以用来 存储多个数据,通常用于存储 描述一个 物体 的相关信息 和列表的区别: 列表 是 有序 的对象 ... 
- python中Requests库错误和异常
			主要有以下四种: 1.Requests抛出一个ConnectionError异常,原因为网络问题(如DNS查询失败.拒接连接等错误) 2.Response.raise_for_status()抛出一个 ... 
- 自动化测试-15.selenium单选框与复选框状态判断
			本篇主要介绍单选框和复选框的操作 一.认识单选框和复选框 1.先认清楚单选框和复选框长什么样 2.各位小伙伴看清楚哦,上面的单选框是圆的:下图复选框是方的,这个是业界的标准,要是开发小伙伴把图标弄错了 ... 
- C# ComboBoxTree控件
			这个控件,百度.codeproject等,能查到更好的解答和代码.写这个,是因为,我在3个小时内,没有看懂接手项目,原有的TreeCombox自定义代码逻辑.而我觉得很有必要改动它.因为新弄得网页端很 ... 
- 二进制安装MySQL数据库
			今天安装的是二进制的mysql包5.7.21的包,在配置文件的时候采了好多坑,左后还是搞定了,来和大家分享一下 二进制msyql5.7.21版本的主从复制安装 新建/picclife目录 mkdir ... 
- Python全栈之路----Python2与Python3
			金角大王Alex python 之路,致那些年,我们依然没搞明白的编码 python2与python3的区别 py2 str = bytes 为什么有bytes? 是因为要表示图片.视频等二进制格式 ... 
- 百度地图JS只显示一个省
			转载地址:http://www.cnblogs.com/wondergx/p/5305602.html 转载地址:https://blog.csdn.net/myfmyfmyfmyf/article/ ... 
- django admin 支持时间更改
			from django.db import models import django.utils.timezone as timezone class Doc(models.Model): add_d ... 
- PythonStudy——数据类型转化  Data type conversion
			类型转换 1.数字类型:int() | bool() | float() 2.str与int:int('10') | int('-10') | int('0') | float('-.5') | fl ... 
- PythonStudy——python中如何使输出不换行
			1.在python 3.x版本中,使用print(,end="") 可使输出不换行, 例如: 
