Guava学习(一):Optional

Java核心工具库Guava介绍以及Optional和Preconditions使用进行非空和数据校验 Guava 项目是 Google 公司开源的 Java 核心库,它主要是包含一些在 Java 开发中经常使用到的功能,如数据校验、不可变集合、计数集合,集合增强操作、I/O、缓存、字符串操作等。并且 Guava 广泛用于 Google 内部的 Java 项目中,也被其他公司广泛使用,甚至在新版 JDK 中直接引入了 Guava 中的优秀类库依赖引入注:博客:关注公众号霸道的程序猿获取编程相关电子书、教程推送与免费下载。 阅读详情

Guava学习(一):Optional

Optional对象中的主要方法如下:
Optional方法描述
例子:

package com.bluedragon.guavalearning.optional;

import com.google.common.base.Optional;

/**
 * @author CodeRush
 * @date 2019/7/27 20:39
 */
public class OptionalTest {

    public static void main(String[] args) {
        //Optional.of(T) ) 创建指定引用的Optional实例, 若引用为null则快速失败 optional:可选的
        Optional<Integer> possible = Optional.of(5);
        //present:存在
        System.out.println(possible.isPresent());  //true
        //返回Optional所包含的引用, 若引用缺失, 则抛出java.lang.IllegalStateException
        System.out.println(possible.get()); //5
        //含有默认值的返回,如果为null返回or中的值,否则直接返回引用值
        System.out.println(possible.or(1)); //5
        //Set<T> asSet()) 返回Optional所包含引用的单例不可变集, 如果引用存在, 返回一个只有单一元素的集合,
        // 如果引用缺失, 返回一个空集合。
        System.out.println(possible.asSet()); //[5]

        try {
            Optional<Object> nullOptionalOf = Optional.of(null); //of接收到null会快速失败
        } catch (Exception e) {
            System.out.println("引用为null则快速失败,Optional.of快速失败率,不会创建成功");
            e.printStackTrace();
        }

        //Optional.absent()) 创建引用缺失的Optional实例 absent:不存在
        Optional<Object> nullOptional = Optional.absent();
        System.out.println(nullOptional.isPresent()); //false
        System.out.println(nullOptional.or("值为null")); //值为null
        System.out.println(nullOptional.orNull());//null
        System.out.println(nullOptional.asSet()); //[]

        //Optional.fromNullable(T)) 创建指定引用的Optional实例, 若引用为null则表示缺失
        Optional<Object> nullableOptional = Optional.fromNullable(null); //从允许null的对象生成
        try {
            System.out.println(nullableOptional.get()); //为null的话get方法就会抛出异常,可以使用orNull或者or(null)
        } catch (Exception e) {
            System.out.println("get到null值抛出异常");
            e.printStackTrace();
        }
   	}
   	
}

到了java8的时候,jdk中已经将Optional集成进来了,使用方法基本都类似,所以使用java8的话,可以不用guava的Optional了,后面要说的Ordering也一样

C#上位机实战:借助NetToPLCSim与西门子S7-1200仿真通信全攻略 本文详细介绍了如何使用C#开发上位机程序,通过NetToPLCSim与西门子S7-1200进行仿真通信的全过程。从环境准备、PLC仿真环境搭建、网络配置到C#代码实现,提供了完整的实战指南和常见问题解决方案,帮助开发者快速掌握工业自动化通信技术。 阅读详情

相关推荐

IT资产管理(三)之GLPI资产录入

glpi 在 10 版本之后已经有自带的 glpi-agent 代理程序可自动获取服务器、电脑等的信息并进行自动录入和更新,不再依赖 10 版本之前的 fusioninventory 插件或者第三方资产统计平台 OCS Inventory 等

予挚之的博客 2981

跟着 Guava 学 Java 之 Optional

使用和避免 null “ Google 底层代码库,95%的集合类不接受 null 值作为元素。 相比默默地接受 null,使用快速失败操作拒绝 null 值对开发者更有帮助。 ” 很多 Guava 工具类对 Null 值都采用快速失败操作,此外,Guava 还提供了很多工具类,让你更方便地用特定值替换 Null 值 例子 我们知道 JDK8 以后 也参考 Guava 加入了 Optional的 API,使用上跟 Guava 的区别不大,例子中我们使用 JDK 的 API 来演示。 直接上个实际工作中的案例

m0_38017860的博客 381

Python数据爬取超详细讲解(零基础入门,老年人都看的懂)

Python数据爬取超详细讲解(零基础入门,老年人都看的懂)

python03011的博客 3751

Optional 使用方法详解

Optional的作用是什么?他都有哪些方法?阿里规范点名说尽量用Optional来避免空指针,那么什么场景用Optional?本篇文章围绕这三点来进行讲解。

qq_43842093的博客 2103

【实践指南】Wasserstein距离在电力系统鲁棒优化中的核心应用

本文深入探讨了Wasserstein距离在电力系统分布鲁棒优化中的核心应用。针对风电、光伏出力的不确定性,文章阐述了如何利用Wasserstein距离构建模糊集,将复杂的分布鲁棒优化问题转化为可求解的确定性模型,并提供了从理论到代码实现的完整实践指南,有效平衡了系统运行的经济性与鲁棒性。

weixin_29229261的博客 306

使用ClickHouse JDBC官方驱动,踩坑无数

这个问题我在网上查原因说是由于Zookeeper压力过大,表变成只读状态,导致ClickHouse插入数据失败。写入数据频率过高。Zookeeper中的集群节点挂掉。而我们项目出现这个问题的原因是第一个:写入数据频率过高。但是在网上搜资料的过程中,我又发现了另外一个问题:我们项目用了JDBC驱动,但ClickHouse官方并不推荐。。证实了官网确实不建议使用驱动:而应该改成驱动,并且推荐使用0.3.2以上的版本:于是,后面几天开始了ClickHouse的JDBC驱动升级之旅。

2万+

Guava学习笔记(二):Optional优雅的使用null

在我们学习和使用Guava的Optional之前,我们需要来了解一下Java中null。因为,只有我们深入的了解了null的相关知识,我们才能更加深入体会领悟到Guava的Optional设计和使用上的优雅和简单。  null代表不确定的对象:   Java中,null是一个关键字,用来标识一个不确定的对象。因此可以将null赋给引用类型变量,但不可以将null赋给基本类型变量。   J...

liinux-Talk is cheap,show me the code. 957

数字IC/FPGA 秋招知识点不全面整理

数字IC/FPGA 秋招知识点不全面整理

w0shishabi的博客 7866

guava-Optional

optional是guava的base包中的一个类,主要为了避免空指针存在,优雅的校验参数是否为空,在JDK8中也是加入了Optional类,其中 包含了guava.optional的所有方法,并新增了一些其他的特性和方法... 应用场景: Optional类应该作为方法的返回值来使用。 Optional类不是为了避免所有的空指针类型机制。方法或构造函数输入参数强制性检查就仍然是有必要的。...

weixin_30725467的博客 193

【异常】OpenClaw 连接异常This site can‘t be reached 127.0.0.1 refused to connect Try: Checking the proxy

在访问OpenClaw相关服务时,浏览器提示如下异常信息,无法正常加载页面:Try:补充说明:该报错仅出现于本地访问场景(127.0.0.1为本地回环地址),涉及OpenClaw核心服务的本地连接交互,无外部网络及敏感信息泄露风险。

奶爸的编程之路,也就一周冷个三天 1483

YOLO26 标签分配机制:STAL 小目标感知分配策略

YOLO26提出的STAL标签分配策略通过尺度感知机制优化了小目标检测性能。该方法根据目标面积将检测对象分为小、中、大三类,分别采用差异化的分配参数(TopK数量、IoU阈值和中心度权重),特别是对小目标采用更宽松的匹配条件和更高的中心度权重。实验结果表明,STAL策略显著提升了小目标检测精度(AP_small),同时保持了整体检测性能(mAP),为解决目标检测中尺度不平衡问题提供了有效方案。

一键难忘的博客 788

Guava源码学习(一)Optional

基于版本:Guava 22.0 Wiki:Using and avoiding null 0:Optional简介 null在很多场景下会引发问题,NullPointerException困扰过无数的程序员,Guava用快速失败的思路来显式的解决null问题 ps:JDK1.8也提供了Optional工具包 1. 类图 2. 设计思路 抽象类Optional有两...

weixin_30384217的博客 262

【QNX+Android虚拟化方案】00 - 系列文章链接汇总

【QNX+Android虚拟化方案】00 - 系列文章链接汇总

|~~~热爱生活、努力学习的小伙汁~~~| 1万+

Guava Optional 和 Java 8 optional

Null  上帝创造了男人,多年之后他老人家后悔了! Null的发明人同时也是快速排序的发明人表达对Null的忏悔称:“”这是个造成上亿美元损失的错误“。

lessisawesome 的专栏 6429

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

《Guava之Optional》

《Guava之Optional》对于null的随意使用会一系列难以预料的问题。通过对大量代码的研究和分析,我们发现大概95%以上的集合类默认并不接受null值,如果有null值将被放入集合中,代码会立刻中断并报错而不是默认存储null值,对于开发来说,这样能够更加容易的定位程序出错的地方。  另外,null值是一种令人不满的模糊含义。有的时候会产生二义性,这时候我们就很难搞清楚具体的意思,如果程序返

wojiushimogui的博客 1096

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Guava - Guava 基本工具 Preconditions、Optional

Guava - Guava 基本工具 Preconditions、Optional

weixin_52173250的博客 1381

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

guava Optional

简介 Optional是用来处理java中的null,在评审代码的时候,经常听到:“如果返回null的话,你这就报错了”。下面说一下使用null的好处,坏处,怎么使用null以及在guava中怎么使用null 关于null null的坏处 null含义是模糊的,看这个例子: Map map=Maps.newHashMap();//使用Maps创建了一个hashmap map.pu

Born To Learn And Share 585

Guava之optional

开发过程中,经常会生成对象,但是绝大多数的时候,若返回null对象,就会抛出空指针异常。 例如在编写DAO层的底层是会开放一个接口: /** * 获得页面传递过来的组合条件 * @return */ public abstract List getCriterions(T entity); /** * 查询约束: *根据C

lixwjava的专栏 865

guava Optional 对象使用

guava Optional 测试代码 public static void main(String[] args) { Optional<Integer> object1 = Optional.of(Integer.valueOf(1)); Optional<Integer> object2 = Optional.absent(); O...

玄大冰 255

《Guava Optional类》学习笔记

Optional用于包含非空对象的不可变对象。 Optional对象,用于不存在值表示null。这个类有各种实用的方法,以方便代码来处理为可用或不可用,而不是检查null值。 类声明 以下是com.google.common.base.Optional<T>类的声明: @GwtCompatible(serializable=true) public abstract class Optional<T> extends Object i...

hupengfei_shenyang的博客 194

Guava学习(基本工具)——Optional

Guava的Optional对象是为了让编程人员时刻记住引用变量指向null的情况,此处还需参考java关键字null Optional的使用契机 轻率地使用null可能会导致很多令人惊愕的问题。通过学习Google底层代码库,我们发现95%的集合类不接受null值作为元素。我们认为, 相比默默地接受null,使用快速失败操作拒绝null值对开发者更有帮助(以上这句话是Guava官方教程的

宫爆鸡丁要加花生的博客 889

Guava 学习

Guava 学习 一、概述 Guava是由Google开发的基于Java的开源库,包含许多Google核心库,它有助于最佳编码实践,并有助于减少编码错误。它为集合[collections]、缓存[caching]、原生类型支持[primitives support]、并发库[concurrency libraries]、通用注解[common annotations]、字符串处理[string processing]、I/O等等提供实用程序方法。 <!-- https://mvnrepository.

weixin_43527947的博客 821

Guava学习(一)

guava官网学习记录(一)

m0_62074940的博客 1576

Guava Optional类分析

Guava Optional类 Optional用于包含非空对象的不可变对象。 Optional对象,用于不存在值表示null。这个类有各种实用的方法,以方便代码来处理为可用或不可用,而不是检查null值。 类声明 以下是com.google.common.base.Optional 类的声明: @GwtCompatible(serializable=true) pu...

技术研究中心 366

Guava中的Optional来表达null

写过Java的人都知道有一种exception叫做NullPointerException。所以写的好的程序都是对输入输出进行null检查,也就是防御性编程。 但null具体表示什么意思,大家知道吗?有人说null就是空对象,然后呢?空对象表示什么呢?表示操作成功了,但是结果是空对象,还是操作没成功,所以是空对象?这两种意思到底可以是哪种呢? 正因为null可以被解释成这两种意思,所以

hongchangfirst 3330

Guava Optional 优雅处理 null 详解

本文介绍了Guava库中的Optional类,它通过包装可能为null的值,强制开发者显式处理空值情况,从而解决Java中常见的NullPointerException问题。主要内容包括:Optional的创建方法(of/absent/fromNullable)、核心操作(值查询、默认值处理、链式转换)、高级特性(transform方法)以及实际应用场景(配置系统、数据访问层)。文章还对比了Guava Optional与Java8 Optional的异同,提供了性能优化建议和迁移指南,并通过综合案例展示了如

油墨香^-^的博客 900
上一篇: 大型网站技术架构·核心原理与案例分析思维导图
下一篇: Guava学习(二):Preconditions 前置条件
Blue Code
博客等级 码龄11年 3粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值