文档章节

Optional类的简单了解

wind2012
 wind2012
发布于 01/23 20:50
字数 309
阅读 14
收藏 0
import java.util.Optional;

/**
 * @author hanliwei
 */
public class OptionalTest {

    /**
     * Optional 类是一个可以为null的容器对象。如果值存在则isPresent()方法会返回true,调用get()方法会返回该对象。
       Optional 是个容器:它可以保存类型T的值,或者仅仅保存null。Optional提供很多有用的方法,这样我们就不用显式进行空值检测。
       Optional 类的引入很好的解决空指针异常。

        可以参考:https://lw900925.github.io/java/java8-optional.html
                 https://segmentfault.com/a/1190000008692522
                 https://stackoverflow.com/questions/2250031/null-check-in-an-enhanced-for-loop
     * @param args
     */
    public static void main(String[] args) {
        OptionalTest optionalTest = new OptionalTest();

        Integer value1 = null;
        Integer value2 = new Integer(10);

        //Optional.ofNullable -允许传递为null的参数
        Optional<Integer> a = Optional.ofNullable(value1);

        //Optional.of - 如果传递的参数为null,抛出异常NullPointerException
//        Optional<Integer> b = Optional.of(value1);
        Optional<Integer> b = Optional.of(value2);
        System.out.println(optionalTest.sum(a,b));


    }

    public Integer sum(Optional<Integer> a , Optional<Integer> b) {
        //Optional.isPresent -判断值是否存在

        System.out.println("第一个参数值存在:" + a.isPresent());
        System.out.println("第二个参数值存在:" + b.isPresent());

        //Optional.orElse - 如果值存在,返回它,否则返回默认值
        Integer value1 = a.orElse(new Integer(0));

        //Optional.get - 获取值,值需要存在
        Integer value2 = b.get();
        return value1 + value2;
    }
}

 

© 著作权归作者所有

共有 人打赏支持
wind2012
粉丝 12
博文 37
码字总数 59444
作品 0
海淀
高级程序员
私信 提问
理解、学习与使用 Java 中的 Optional

从 Java 8 引入的一个很有趣的特性是 Optional 类。Optional 类主要解决的问题是臭名昭著的空指针异常(NullPointerException) —— 每个 Java 程序员都非常了解的异常。 本质上,这是一个包...

oschina
2017/09/21
2.4K
8
java8 -函数式编程之Optional

前言 在某些情况下,首先要判断某个参数或者某个方法的返回值是否为null,才能继续操作该参数。对于某些链式操作需要多次通过if语句判断是否为空,才能确保不抛出NullPointerException,这段...

细肉云吞
2018/12/24
0
0
给女朋友讲解什么是Optional【JDK 8特性】

只有光头才能变强 前两天带女朋友去图书馆了,随手就给她来了一本《与孩子一起学编程》的书,于是今天就给女朋友讲解一下什么是Optional类。 至于她能不能看懂,那肯定是看不懂的。(学到变量...

Java3y
2018/11/19
0
0
(转) 理解、学习与使用 Java 中的 Optional

从 Java 8 引入的一个很有趣的特性是 Optional 类。Optional 类主要解决的问题是臭名昭著的空指针异常(NullPointerException) —— 每个 Java 程序员都非常了解的异常。 本质上,这是一个包...

西瓜1994
2018/08/07
0
0
Guava库学习:Guava 零碎知识

这将是Guava库学习系列的最后一篇,但是仍然包含许多零零碎碎的知识。虽然不可能覆盖所有Guava涉及的知识,但我们会竭尽所能。本篇将会介绍一些Guava中有用的工具,并不需要再开一个系列。本...

Realfighter
2015/05/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Nginx 配置 root目录、虚拟目录alias

Nginx是通过 alias 设置虚拟目录,在Nginx的配置中,alias目录和root目录是有区别的。 alias指定的目录是准确的,即location匹配访问的path目录下的文件直接是在alias目录下查找的; root指定...

Yue_Chen
25分钟前
1
0
Nginx的SSL

Nginx的SSL 当我们访问站点时,网址的前缀是https的就是启用了ssl SSL介绍:SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供...

李超小牛子
31分钟前
3
0
matlab-自控原理 roots 传递函数 零极点

  matlab : R2018a 64bit     OS : Windows 10 x64 typesetting : Markdown    blog : my.oschina.net/zhichengjiu    gitee : gitee.com/zhichengjiu   code clearclc% s^4+5*......

志成就
33分钟前
1
0
spring官网上下载历史版本的spring插件,springsource-tool-suite

spring官网下载地址(https://spring.io/tools/sts/all),历史版本地址(https://spring.io/tools/sts/legacy)。 注:历史版本下载的都是装好插件的eclipse,而非我们需要的插件 目前官网上提...

开源oschina
33分钟前
2
0
同一台服务器,mysql登录不了指定端口的问题

一台服务器上启动了两个mysql服务,端口分别是3306,3307 mysql -P3307 -uroot -p,输入密码,登录失败 输入3306的密码,登录成功,结果登到3306数据库上去了 查资料发现,不指定主机-h 的话,...

chdahuzi
33分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部