Java8新特性总结 - 2.Optional类
所有示例代码打包下载 : 点击打开链接
- 接口新增默认方法和静态方法
- Optional类
- Lambda表达式
- 方法引用
- Stream API - 函数式操作流元素集合
- Date/Time API
- 新API和工具
- Nashorn , JavaScript引擎
2 . Optional类
常用的几个方法 :
序号 | 方法 | 描述 |
1 | static Optional<T> empty(); | 返回空的Optional实例 |
2 | static Optional<T> of(T value); | 返回一个非null值得Optional实例 , 若传入参数为null , 则直接报异常 |
3 | static Optional<T> ofNullable(T value); | 返回一个包含value的Optional实例 ,若传入参数为null , 则返回空的Optional实例 |
4 | T get(); | 如果包含值不为null , 则返回该值 , 否则抛出异常 : NoSuchElementException |
5 | boolean isPresent(); | 如果包含值不为null , 则返回true , 否则false |
6 |
void ifPresend(Consumer<? supper T> consumer); |
如果包含值不为null , 则调用consumer , 否则不做任何事情 |
7 | T orElse(T other); | 如果包含值不为null , 则返回该值 , 否则返回other |
8 | T orElseGet(Supplier<? extends T> other); | 如果包含值不为null , 则返回该值 , 否则触发other , 并返回other调用的结果 |
9 | T orElseThrow(Supplier<? extends X> exceptionSupplier) throws X; | 如果包含值不为null , 则返回该值 , 否则抛出由Supplier继承的异常 |
10 | Optional<T> filter(<Predicate<? supper T> predicate); | 如果包含值不为null , 且该值匹配给定的predicate , 则返回包含该值得Optional实例 , 否则返回空的Optional |
11 | Optional<U> map(Function<? supper T , ? extends U> mapper); | 如果包含值不为null , 则调用提供的映射方法 , 如果返回非null , 返回一个Optional实例 |
12 | Optional<U> flatMap(Function<? supper T , Optional<U>> mapper); | 如果包含值不为null , 则返回映射方法处理之后的的Optional实例 , 否则返回空的Optional |
代码Demo :
package com.xbz.java8.optional;
import java.util.Optional;
/** @title Optional */
public class OptionalDemo1 {public static void main(String[] args){Integer i1 = null;Integer i2 = new Integer(10);Optional<Integer> optional1 = Optional.ofNullable(i1);Optional<Integer> optional2 = Optional.of(i2);
System.out.println(optional1.isPresent());//判断值是否存在optional2.ifPresent(i -> System.out.println(i * 2));//如果值存在则执行函数(函数式编程 , 后文有说明)System.out.println(optional1.orElse(0));//为null则返回默认值System.out.println(optional2.get());//获取值}
}
输出结果 :
false
20
0
10
Java8新特性总结 - 2.Optional类相关推荐
- Java 8 新特性001_Java 8 Optional 类
Optional 类是一个可以为null的容器对象.如果值存在则isPresent()方法会返回true,调用get()方法会返回该对象. Optional 是个容器:它可以保存类型T的值,或者仅仅保 ...
- java8新特性(5)— Optional 类
java8新特性(5)- Optional 类 空指针解决方案 package com.common.jdk8;import java.util.Optional;//Optional 类是一个可以为 ...
- Java8新特性学习_001_(Lambda表达式,函数式接口,方法引用,Stream类,Optional类)
目录 ■代码 ■代码运行结果 ■代码说明 ・44行:Stream的.foreach方法ー参数类型:函数式接口 ・82行:Interface中,default方法 ・92行 Stream的.max方 ...
- Java8新特性之空指针异常的克星Optional类
Java8新特性系列我们已经介绍了Stream.Lambda表达式.DateTime日期时间处理,最后以"NullPointerException" 的克星Optional类的讲解 ...
- 快速学习Java8新特性第七讲——Optional类
在<快速学习Java8新特性第五讲--强大的Stream API>这一讲中,我就已经提及到了Optional类.在这一讲中,我将对其做一个更加细致的讲解. Optional类是什么? Op ...
- 【java8新特性】——Optional详解(三)
一.简介 Optional类是Java8为了解决null值判断问题,借鉴google guava类库的Optional类而引入的一个同名Optional类,使用Optional类可以避免显式的null ...
- 【Java8新特性 串行/并行流-Optional容器类-时间格式化线程安全等】
Java8新特性二 一.并行流与顺序流 1.概念 2.Fork/Join框架 3. Fork/Join框架代码示例: 二.Optional类 1. 什么是Optional对象 2. Optional类 ...
- Java8新特性 Lambda、Stream、Optional实现原理
Java8新特性 Lambda.Stream.Optional实现原理 一.接口中默认方法修饰为普通方法 二.Lambda表达式 2.1.什么是Lambda表达式 2.2.为什么要使用Lambda表达 ...
- 【小家java】java8新特性之---Optional的使用,避免空指针,代替三目运算符
相关阅读 [小家java]java5新特性(简述十大新特性) 重要一跃 [小家java]java6新特性(简述十大新特性) 鸡肋升级 [小家java]java7新特性(简述八大新特性) 不温不火 [小 ...
最新文章
- 辅助模块加速收敛,精度大幅提升 移动端实时的NanoDet-Plus来了
- 增长之前,请先做好业务底线
- laravel 任务队列_Laravel5.5之事件监听、任务调度、队列
- LeetCode979. 在二叉树中分配硬币
- java jtable 按钮_java web 怎么在jtable中添加按钮?
- windows GDI开发
- htc 常见错误和解决方案
- 花瓣图片采集工具研究
- win11取消右键菜单折叠恢复经典传统菜单模式方法解决
- 如何通过IP共享文件
- 什么是云计算中的SaaS(软件即服务)?
- setValuesForKeysWithDictionary崩溃
- TC397 MCMCAN
- 2016.7.31整机升级计划
- 信息学奥赛一本通:1132:石头剪子布
- windows功能_四款功能强大的windows软件,个个都是精品!
- Oracle11g下载安装教程
- 「 机器人学 」“里程计/仪技术”浅谈
- kalibr使用笔记
- 网络高清车载云台摄像机,白光云台摄像机激光云台摄像机
热门文章
- Android+Jquery Mobile学习系列(8)-保单/生日提醒功能
- Nginx服务状态监控
- String与Date、Timestamp互转
- 拖动无边框的登入窗口
- 【原创,提供下载】winfrom 打印表格,字符串的封装
- 第一章:React入门
- HTML Img Compression(压缩)
- 杜绝0.1 + 0.2 =0.30000000000000004
- 7-71 爬动的蠕虫 (15 分)
- C程序语言表达式运算顺序,详解C++编程中表达式的语义与计算顺序