java optional 用法_Java8 Optional的使用及方法介绍

Java8 Optional

** Optional主要是为了去除java.lang.NullPointerException (NPE) 空指针异常**

Optional:

585ee0a5bc5277efdb967dcf294e756c.png

该类是的构造方式是private(私有构造),大体讲解一下几个常用的方法。

34f83d9de7b8700359cfef91bc8189af.png

83607a70bb9cd0b34d4c4b9dac0f6bc7.png

of方法

是一个静态方法,用于创作Optional对象,他的参数必须是一个明确非null的值。

// of: 方法是明确参数不是null

Optional optional = Optional.of("hello");

// 判空 不建议 ifPresent方法(无参): 返回的是一个boolean 值 不是null返回 true

if (optional.isPresent()) {

System.out.println(optional.get());

}

// 建议 结果: hello ifPresent方法(有参): 他的参数是一个Consumer函数式接口

// 不是null返回 执行Consumer#accept

optional.ifPresent(System.out::println);

of方法源码:

public static Optional of(T value) {

return new Optional<>(value);

}

isPresent

判读Optional对象是否为空。有一个重载方法。

isPresent(无参)源码:

返回的是一个boolean 值 不是null返回 true,反之返回false。

注: 不知道value是啥的请自行看看上面的构造方法截图。

public boolean isPresent() {

return value != null;

}

isPresent(有参)源码:

他的参数是一个Consumer函数式接口,不是null返回 执行Consumer#accept。

public void ifPresent(Consumer super T> consumer) {

if (value != null)

consumer.accept(value);

}

empty

他与of方法相似是一个静态方法,也用于创作Optional对象,但是他没有参数,创建的是一个空的Optional对象。

ptional optional1 = Optional.empty();

if (optional.isPresent()) {

// 输出结果为空(什么都没有)

System.out.println(optional.get());

}

// 建议

optional1.ifPresent(System.out::println);

empty源码:

public static Optional empty() {

@SuppressWarnings("unchecked")

Optional t = (Optional) EMPTY;

return t;

}

get

用于获取Optional对象中的的value。但是获取的时候最好还是isPresent判断一下

get源码:

public T get() {

if (value == null) {

throw new NoSuchElementException("No value present");

}

return value;

}

orElse

用于获取Optional对象中的的value。如果value为空则将orElse方法的参数(T 结果泛型)当做value。

Optional optional1 = Optional.empty();

// 结果就是value

System.out.println(optional1.orElse("world"));

orElse源码:

public T orElse(T other) {

return value != null ? value : other;

}

orElseGet

用于获取Optional对象中的的value。如果value为空则将orElseGet方法的参数是一个Supplier接口他的结果,当做value。

String supplier = optional1.orElseGet(() -> "Supplier");

orElseGet源码:

public T orElseGet(Supplier extends T> other) {

return value != null ? value : other.get();

}

orElseThrow

用于获取Optional对象中的的value。如果value为空则抛出异常。

String supplier1 = optional1.orElseThrow(() -> {

return new Exception();

});

System.out.println("supplier1 = " + supplier1);

orElseThrow源码:

public T orElseThrow(Supplier extends X> exceptionSupplier) throws X {

if (value != null) {

return value;

} else {

throw exceptionSupplier.get();

}

}

ofNullable

他与of方法和ofNullable方法相似是一个静态方法,也用于创作Optional对象,但是他参数,可以是null也是以不是null。

Optional optional = Optional.ofNullable("hello");

ofNullable源码:

public static Optional ofNullable(T value) {

return value == null ? empty() : of(value);

}

本文地址:https://blog.csdn.net/weixin_43939924/article/details/110262825

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

weixin_39902870
关注 关注
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用Java8中Optional机制的正确姿势
08-28
Java 8 中引入的 `Optional` 类是一种设计模式,旨在帮助开发者更好地处理 `null` 值,从而减少 `NullPointerException` 的出现。...理解和熟练掌握 `Optional` 的使用,可以显著提升 Java 8 代码的质量和安全性。
03 java8实战--常见函数式接口:Consumer
wyaoyao93的博客
08-24 337
文章目录1 Consumer2 BiConsumer 1 Consumer @FunctionalInterface public interface Consumer<T> { /** * Performs this operation on the given argument. * * @param t the input argument */ void accept(T t); 接受一个T,无返回值,内部就是消费这个T来实现
java基础:学习、使用函数式接口
sandypig的博客http://write.blog.csdn.net/configure/co
08-21 189
@FunctionalInterface注解的类为函数接口 如java.utll包中的Comparator java.util.function包中的Consumer,Supplier等 如何使用? 1,使用接口实现方法 2,使用lambda表达式 3,使用方法引用 List<String> list = Arrays.asList("aa","bb","cc"); list.forEach(new Consumer<String>() {
JDK8函数式接口Function、Consumer、Predicate、Supplier
热门推荐
酒肉猿
08-18 4万+
如果你在探索 在JAVA8中 支持lambda表达式的接口,你会在java.util.function包下发现像 Function、Supplier、Consumer、Predicate 等接口。这些接口有一个抽象方法,会被定义的lambda表达式重写。Function接口用于将一些代码封装到一个方法中,该方法接受一些值作为输入参数,然后在对输入执行所需的操作之后返回另一个值。该方法的输入参数类型
Java 函数接口
细节打败一切
07-04 1082
现象: Consumer简单使用实现: 1:forEach 参数接收Consumer 2:forEach的调用 3:Consumer 两个方法 accept 和 andThen 方法:1.Consumer accept 的简单使用 创建方法 testConsumer 接收value 和函数consumer 调用accept执行 2.Consumer andThen的简单使用 先执行了accept 然后在执行了andThen 源码:先执行了accept...
java 数据结构 LinkedList
qq_62383709的博客
04-08 108
【代码】java 数据结构 LinkedList。
Java8 Optional原理及用法解析
09-07
总的来说,`Optional` 是 Java 8 提供的一种强大的工具,用于改善代码的健壮性和可读性,通过使用 `Optional`,可以减少对空值的显式检查,提升代码的整洁性和安全性。在编写需要处理可能为 `null` 的值的代码时,应...
Java8中新特性Optional、接口中默认方法和静态方法详解
08-28
Java 8 中引入的新特性显著地改进了编程体验,尤其是对于Optional、接口中默认方法和静态方法的引入。Optional 类的出现旨在解决经典的空指针异常问题,它提供了一种更安全的方式来处理可能为空的对象。下面我们将...
Java8中Optional类型和Kotlin中可空类型的使用对比
08-29
Java 8 中引入的 `Optional` 类型是为了改善传统 Java 编程中处理 `null` 值的困境。在 Java 之前,未初始化的对象引用可能导致 `NullPointerException`,这经常被视为编程错误。`Optional` 类型提供了一种更加显式...
Java如何使用Optional与Stream取代if判空逻辑(JDK8以上)
08-25
Java 8引入了两个强大的工具,Optional 和 Stream,它们极大地改善了处理可能为空的对象的方式,减少了if语句的使用,使代码更加简洁、易读。本文将深入探讨如何使用这两个特性来取代传统的if判空逻辑。 首先,让...
Java8新特性-Optional,狂神说docker笔记百度云
m0_61439560的博客
09-02 176
// 这个是通用的代表NULL值的Optional实例 private static final Optional<?> EMPTY = new Optional<>(); // 泛型类型的对象实例 private final T value; // 实例化Optional,注意是私有修饰符,value为NULL private Optional() { this.value = null; } // 直接返回内部的EMPTY实例 public
Java 8引入级简单不是返回NULL
gryrtheee的博客
02-23 294
Java 8引入级。简单地说,不是返回NULL,然后检查NULL,而是返回Optional实例,该实例可以有值集,也可以没有值集。这样你就不会失败NullPointerException. 我不会讨论Optional类型将完全消除NPEs(它不会)。相反,我将从不同的角度来讨论-API设计。除了Java的可选性之外,我还将展示番石榴的可选性和Scala的可选性Option比较它们。 正如约书亚·布洛赫所建议的那样,API应该尽可能小,但不要变小。API的概念权重应该最小化,如果您想知道是否在API中包含
JAVA8之妙用Optional解决判断Null为空的问题
yuechuzhixing的博客
04-18 429
引言 在文章的开头,先说下NPE问题,NPE问题就是,我们在开发中经常碰到的NullPointerException.假设我们有两个类,他们的UML类图如下图所示 在这种情况下,有如下代码 user.getAddress().getProvince(); 这种写法,在user为null时,是有可能报NullPointerException异常的。为了解决这个问题,于是采用下面的写法 if(user!=null){ Address address = user.getAddress(); ...
Java 1.8新特性 Optional使用
m0_48324758的博客
07-18 661
1.使用Optional的目的是为了解决java代码运行过程中的空指针问题,以前在代码中为了判断空指针往往使用if(null!=XXXX)等方式来实现,对于一个嵌套对象来说,要重复的使用这种方法,最后写出不美观又冗余的代码.orElse()方法允许我们在获取的对象为空值时为我们返回一个自定义的对象.使用orElseGet()获取Option的值。使用ifPresent()获取Option的值。对于嵌套的对象来说一般的获取对象值的方法为。使用orElse()获取Option的值。......
干货,一文彻底搞懂 JavaOptional
沉默王二
03-10 3万+
史上最好的 Optional 指南,没有之一
Java8特性之Optional详细解读
Anbernet的专栏
06-29 2万+
为什么要设计Optional?    为了解决NullPointerException问题,减少代码中的判空,实现函数式编程,给工程师们提供函数式的API。举例看一下 如下图我们平时在编码的时候需要不断的判断对象是否为空来做大量的处理但是使用Optional后是如下这样的是不是很神奇?下面详细分析Optional类中的方法Optional类中的方法依赖Objects类,Objects类是做什么的呢...
Java 8 新特性之Optional详细介绍
melck的博客
06-29 2282
使用Java Optional可以使代码更加简洁和易读,并提供了更好的错误处理机制。它非常适合处理可能为空的对象,例如方法返回的结果或者从外部数据源获取的数据。通过使用Optional,我们可以避免繁琐的if-else条件判断,使代码逻辑更加清晰和优雅。Java OptionalJava 8引入的一个类,用于处理可能为空(null)的值,以提供更安全和优雅的方式来处理这些情况。通过使用Java Optional,我们可以以一种优雅和安全的方式来处理可能为空的值,使代码更加健壮和可读。
JAVA8 Optional教程
penn
07-22 2962
Optional的构造器是私有的 1、无参构造器和带参的构造器都是私有,所有这个创建Optional对象类似单例模式 private Optional() { this.value = null; } /** * Constructs an instance with the value present. * * @param value the non-null value to be present * @thro
详细分析Java中的Optional类以及应用场景
最新发布
码农研究僧的博客
01-29 8931
用开发的角度来讲,该类是 Java 8 中引入的一个用于处理可能为 null 的值的容器类。 它的设计目的是为了解决在代码中频繁出现的空指针异常问题。
JAVA8 Optional深度解析:告别NullPointerException
"JAVA8如何妙用Optional解决NPE问题详解" 在Java 8中,Optional 类被引入作为解决空指针异常(Null Pointer Exception,NPE)的一种新策略。NPE 是Java开发者经常会遇到的问题,它发生在尝试访问或操作一个null对象...
161
原创
45
点赞
226
收藏
87
粉丝
关注
私信
写文章

热门文章

  • 俄罗斯大神win7精简版_俄罗斯大神精简版Windows系统镜像合集(内附Onedrive恢复方法)... 24111
  • E站账号cookie分享_不用输入密码无风险?扫描二维码登录QQ账号也不安全! 20943
  • 笔记本电脑计算机无法显示u盘,笔记本不识别u盘怎么办_笔记本电脑不读U盘如何解决-win7之家... 13959
  • cad加载tiff影像插件_精灵4 RTK内业处理完整教程(PhotoScan+EPS+CASS,附CASS加载TIF插件)... 7948
  • 回溯时间是什么意思_关于回溯算法,你该了解这些! 5805

最新文章

  • 服务器虚拟化性能测试,服务器虚拟化性能测试研究.PDF
  • 怎么提高es服务器的性能,请教如何提升es集群的写入性能
  • 自动化测试获取ajax对话框,自动化测试平台_前后端交互之Ajax
2021年138篇
2020年249篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家北京大型主题商场美陈制作镂空不锈钢校园玻璃钢雕塑生产菏泽玻璃钢浮雕房地产雕塑金明玻璃钢雕塑厂家古县玻璃钢花盆花器茂名玻璃钢蘑菇雕塑淄博卡通玻璃钢雕塑厂家玻璃钢花盆儿模具厂湛江玻璃钢雕塑设计玻璃钢彩绘店掌柜雕塑玻璃钢鹿雕塑工程辽宁玻璃钢雕塑价格承德玻璃钢雕塑哪家强特色玻璃钢雕塑价位广东玻璃钢花盆售价铜鼎定做玻璃钢雕塑厂家镂空玻璃钢雕塑报价石景山区商场圣诞美陈供应商揭阳校园雕塑玻璃钢玻璃钢人物雕塑大全北京大型主题商场美陈销售厂家户外玻璃钢雕塑开裂这怎么修贵州佛像玻璃钢雕塑价位平凉玻璃钢动物雕塑多少钱西安玻璃钢树脂雕塑批发河南花朵玻璃钢卡通雕塑武汉白色玻璃钢花盆陕西定制玻璃钢雕塑供应商玻璃钢雕塑产品环保吗常州室内玻璃钢花盆香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化