Java8新特性 - Optional应用

生命不息,写作不止

继续踏上学习之路,学之分享笔记

总有一天我也能像各位大佬一样

一个有梦有戏的人 @怒放吧德德

分享学习心得,欢迎指正,大家一起学习成长!

简介

Optional 类是一个可以为null的容器对象。如果值存在则isPresent()方法会返回true,调用get()方法会返回该对象。

Optional 是个容器:它可以保存类型T的值,或者仅仅保存null。Optional提供很多有用的方法,这样我们就不用显式进行空值检测。

Optional 类的引入很好的解决空指针异常。

Optional判断是否为空

optional提供了两种方法,一个是ofNullable(args),这个是可以传递空对象,并且不会出现空指针异常;另一个是of(args),这个一旦传递空对象,就会报空指针异常。

public static void main(String[] args) {
Integer integer = null;
Optional<Integer> optionalInteger = Optional.ofNullable(integer);
Optional.of(integer);
}

在ofNullable方法是不会报出空指针,而在of方法时,对象为空则会空指针异常。

通过Optional的ofNullable可以判断对象是否为空,并且能够返回一个Optional的对象,这个对象可以通过get()方法来得到相应的类型,并且二者的hashcode是一致的。

Student student = new Student("lyd", 99);
Optional<Student> optionalInteger = Optional.ofNullable(student);
Student i = optionalInteger.get();
System.out.println("原本的hashcode: " + student.hashCode());
System.out.println("Optional的hashcode: " + i.hashCode());

结果:

通过Optional.ofNullable(student).isPresent() 来判空,isPresent结果为true表示不为空,isPresent返回为false表示为空。

Optional设定默认值

Option提供了可以设置默认值的方法,可以令为空的对象初始化默认值。

public static void main(String[] args) {
Integer num = null;
Integer number = 18;
Integer orElse = Optional.ofNullable(num).orElse(12);
Integer anElse = Optional.ofNullable(number).orElse(12);
System.out.println("orElse: " + orElse);
System.out.println("anElse: " + anElse);
}

结果输出

orElse: 12
anElse: 18

Optional过滤

optional可以实现参数过滤,可以自己重写过滤规则。与Stream流过滤一样,也是通过实现匿名内部类new Predicate得到。

public static void main(String[] args) {
Integer n = 18;
Optional<Integer> num = Optional.ofNullable(n);
Integer integer = num.filter(number -> number > 5).get();
System.out.println(integer);
}

类方法

工作繁忙也需要学习。

创作不易,如有错误请指正,感谢观看!记得点赞哦!

【Java8新特性】- Optional应用的更多相关文章

  1. Java8 新特性 Optional 类

    Optional 类的简介   Optional类的是来自谷歌Guava的启发,然后就加入到Java8新特性中去了.Optional类主要就是为子决解价值亿万的错误,空指针异常.   Optional ...

  2. JAVA8新特性Optional,非空判断

    Optional java 的 NPE(Null Pointer Exception)所谓的空指针异常搞的头昏脑涨, 有大佬说过 "防止 NPE,是程序员的基本修养." 但是修养归 ...

  3. Java8新特性——Optional

    前言 在开发中,我们常常需要对一个引用进行判空以防止空指针异常的出现.Java8引入了Optional类,为的就是优雅地处理判空等问题.现在也有很多类库在使用Optional封装返回值,比如Sprin ...

  4. Java8新特性--Optional

    Java 8引入了一个新的Optional类.Optional类的Javadoc描述如下: 这是一个可以为null的容器对象.如果值存在则isPresent()方法会返回true,调用get()方法会 ...

  5. java8 新特性 -Optional的常见用法

    1. Optional 一. 简介 Opitonal是java8引入的一个新类,目的是为了解决空指针异常问题.本质上,这是一个包含有可选值的包装类,这意味着 Optional 类既可以含有对象也可以为 ...

  6. Java8新特性Optional、接口中的默认方法与静态方法

    Optional Optional 类(java.util.Optional) 是一个容器类,代表一个值存在或不存在,原来用 null 表示一个值不存在,现在 Optional 可以更好的表达这个概念 ...

  7. java8 新特性 Optional容器类

    public class Godness { private String name; public Godness() { } public Godness(String name) { this. ...

  8. Java8新特性——Optional类的使用(有效的避免空指针异常)

    OPtional类的使用 概述 到目前为止,臭名昭著的空指针异常是导致Java应用程序失败的最常见原因.以前,为了解决空指针异常,Google公司著名的Guava项目引入了Optional类,Guav ...

  9. Java8新特性 - Optional容器类

    Optional 类(java.util.Optional) 是一个容器类,代表一个值存在或不存在,原来用null 表示一个值不存在,现在Optional 可以更好的表达这个概念.并且可以避免空指针异 ...

随机推荐

  1. python 参数类型理解

    简介 大家都知道,在java中,函数或者方法的参数在调用时必须对其进行传参操作,也就是所谓的必选参数,也可以称为位置参数,除此之外,python还拥有其他语言不具有的一些参数类型,以下将进行一一介绍. ...

  2. python opencv图像识别(相同大小图片)

    简介 由于项目需要对比两张相同图片的相似度,因此采用opencv将图片转为灰阶数组,然后对比相应的数组来取相似度,此方法只适用于大小相同的图片,较为局限 # -*- coding: utf-8 -*- ...

  3. Frame双向通信插件FrameDataTrans

    FrameDataTrans教程 博客园 乳鸽菌 20220729 核心原理是使用postMessage发送数据,window.addEventListener("message" ...

  4. Python logging日志管理

    import logging logger = logging.getLogger("simple_example") logger.setLevel(logging.DEBUG) ...

  5. 新型MPP的Doris数据库:数据模型和数据分区使用详解

    Apache Doris是一个现代化的MPP分析性数据库产品.是一个由百度开源,在2018年贡献给Apache基金会,成为有顶级开源项目.仅需要亚秒级响应时间即可获得查询结果,可以有效地支持实时数据分 ...

  6. Uniapp---快速生成安卓证书keystore文件

    在用Uniapp开发项目的时候,APP上线,就需要用到安卓证书,当然网上有很多生成证书的教程,各种安装,各种命令,下面就介绍两种快速方便的生成证书的方法: 第一种:在线证书生成: http://www ...

  7. 它把RabbitMQ的复杂全屏蔽了,我朋友用它后被老板一夜提拔为.NET架构师

    本文技术源自外企,并已在多个世界500强大型项目开发中运用. 本文适合有初/中级.NET知识的同学阅读.(支持.NET/.NET Framework/.NET Core) RabbitMQ作为一款主流 ...

  8. wallpaperPKG文件提取

    简单粗暴 下载这个ZIP文件链接: 下载地址戳我 提取码: ag43 解压后双击打开如下文件 我们在解压一下repkg-master.zip解压后如下,注意我的路径进入到这些很多文件的页面 返回首页复 ...

  9. 【python】一些python用法规律笔记

    作为本科用了多年MATLAB的工科生,学起来python有些似曾相识但也有些不习惯的地方. 在这里总结一下,慢慢整理,希望能巩固python语法 一.前闭后开 这个是和MATLAB很大不同.不论是ra ...

  10. laravel框架中验证后在页面提示错误信息

    {{-- 显示错误信息 判断:如果有错误则进行显示,--}} {{-- 通过$errors->any() 获取是否有错误,如果有则返回布尔值true,没有返回布尔值false--}} @if($ ...