所有示例代码打包下载 : 点击打开链接

Java8新特性 : 
  1. 接口新增默认方法和静态方法
  2. Optional类
  3. Lambda表达式
  4. 方法引用
  5. Stream API - 函数式操作流元素集合
  6. Date/Time API
  7. 新API和工具
  8. Nashorn , JavaScript引擎

2 . Optional类

Java中最常见的BUG就是空指针异常 . 在Java8之前 , Google Guava引入了Optionals类来解决NullPointerException , 从而避免源码被各种null检查污染 , 以便开发者写出更加整洁的代码 . Java8也将Optional加入了官方库 . 
Optional仅仅是一个容器 , 存放T类型的值或者null . 它提供了一些有用的接口来避免显式的null检查
常用的几个方法 :
序号 方法 描述
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类相关推荐

  1. Java 8 新特性001_Java 8 Optional 类

    Optional 类是一个可以为null的容器对象.如果值存在则isPresent()方法会返回true,调用get()方法会返回该对象. Optional 是个容器:它可以保存类型T的值,或者仅仅保 ...

  2. java8新特性(5)— Optional 类

    java8新特性(5)- Optional 类 空指针解决方案 package com.common.jdk8;import java.util.Optional;//Optional 类是一个可以为 ...

  3. Java8新特性学习_001_(Lambda表达式,函数式接口,方法引用,Stream类,Optional类)

    目录 ■代码 ■代码运行结果 ■代码说明 ・44行:Stream的.foreach方法ー参数类型:函数式接口 ・82行:Interface中,default方法 ・92行   Stream的.max方 ...

  4. Java8新特性之空指针异常的克星Optional类

    Java8新特性系列我们已经介绍了Stream.Lambda表达式.DateTime日期时间处理,最后以"NullPointerException" 的克星Optional类的讲解 ...

  5. 快速学习Java8新特性第七讲——Optional类

    在<快速学习Java8新特性第五讲--强大的Stream API>这一讲中,我就已经提及到了Optional类.在这一讲中,我将对其做一个更加细致的讲解. Optional类是什么? Op ...

  6. 【java8新特性】——Optional详解(三)

    一.简介 Optional类是Java8为了解决null值判断问题,借鉴google guava类库的Optional类而引入的一个同名Optional类,使用Optional类可以避免显式的null ...

  7. 【Java8新特性 串行/并行流-Optional容器类-时间格式化线程安全等】

    Java8新特性二 一.并行流与顺序流 1.概念 2.Fork/Join框架 3. Fork/Join框架代码示例: 二.Optional类 1. 什么是Optional对象 2. Optional类 ...

  8. Java8新特性 Lambda、Stream、Optional实现原理

    Java8新特性 Lambda.Stream.Optional实现原理 一.接口中默认方法修饰为普通方法 二.Lambda表达式 2.1.什么是Lambda表达式 2.2.为什么要使用Lambda表达 ...

  9. 【小家java】java8新特性之---Optional的使用,避免空指针,代替三目运算符

    相关阅读 [小家java]java5新特性(简述十大新特性) 重要一跃 [小家java]java6新特性(简述十大新特性) 鸡肋升级 [小家java]java7新特性(简述八大新特性) 不温不火 [小 ...

最新文章

  1. 辅助模块加速收敛,精度大幅提升 移动端实时的NanoDet-Plus来了
  2. 增长之前,请先做好业务底线
  3. laravel 任务队列_Laravel5.5之事件监听、任务调度、队列
  4. LeetCode979. 在二叉树中分配硬币
  5. java jtable 按钮_java web 怎么在jtable中添加按钮?
  6. windows GDI开发
  7. htc 常见错误和解决方案
  8. 花瓣图片采集工具研究
  9. win11取消右键菜单折叠恢复经典传统菜单模式方法解决
  10. 如何通过IP共享文件
  11. 什么是云计算中的SaaS(软件即服务)?
  12. setValuesForKeysWithDictionary崩溃
  13. TC397 MCMCAN
  14. 2016.7.31整机升级计划
  15. 信息学奥赛一本通:1132:石头剪子布
  16. windows功能_四款功能强大的windows软件,个个都是精品!
  17. Oracle11g下载安装教程
  18. 「 机器人学 」“里程计/仪技术”浅谈
  19. kalibr使用笔记
  20. 网络高清车载云台摄像机,白光云台摄像机激光云台摄像机

热门文章

  1. Android+Jquery Mobile学习系列(8)-保单/生日提醒功能
  2. Nginx服务状态监控
  3. String与Date、Timestamp互转
  4. 拖动无边框的登入窗口
  5. 【原创,提供下载】winfrom 打印表格,字符串的封装
  6. 第一章:React入门
  7. HTML Img Compression(压缩)
  8. 杜绝0.1 + 0.2 =0.30000000000000004
  9. 7-71 爬动的蠕虫 (15 分)
  10. C程序语言表达式运算顺序,详解C++编程中表达式的语义与计算顺序