guava--应用篇(二)Optional 和断言 Preconditions

Java判空全攻略:从NPE防御到Optional与工具类实战 在Java开发中,空指针异常(NullPointerException)是最常见的运行时异常之一,它源于程序访问了未初始化或显式赋值为null的对象引用。理解判空的原理是编写健壮代码的基础,其技术价值在于提升系统稳定性、保证数据一致性并明确业务逻辑边界。通过防御性编程,开发者可以在方法参数校验、集合操作、链式调用等高频场景中有效拦截风险。本文聚焦Java判空的核心方法,涵盖传统的if判断、JDK7引入的Objects.requireNonNull,以及Java8的Optional容器,并深入解析Apache 阅读详情

Preconditions

  前置条件检查,或者断言也行

   checkNotNull

//        NULL检查
        Preconditions.checkNotNull("");  // null 抛异常

//        抛空指针异常,并打印信息
        checkNotNull("", "参数不能为null");//

    checkArgument

//         参数校验 ,当表达式为false的时候会抛java.lang.IllegalArgumentException
        checkArgument( 1 == 2,"1 != 2");

//         java.lang.IllegalArgumentException: 参数预期是success, 实际等于 error 
        String str = "error";
        checkArgument( str.equals("sucess"), "参数预期是success, 实际等于 %s ", str);

     checkState

//        状态检查,当表达式为false的时候会抛java.lang.IllegalStateException
        checkState(1 == 2);

      checkElementIndex

//        元素下坐标越界检查,index 不能大于size, 否则抛异常java.lang.IndexOutOfBoundsException
//        0 <= index < size
        checkElementIndex(1,Lists.newArrayList().size());
//        同上, 0 <= index <= size
        checkPositionIndex(1,new String[]{}.length,"123");

//        区间范围检查,0 < start <= end <= sieze,否则
//         start < 0 || end < start || end > size 会抛异常
        checkPositionIndexes(2,2,2);

Optional

    对null的处理, 不过再java8中已经已经引用, 所以如果jdk是1.8以上的 可以使用jdk自带的

         /**创建Optional*/
//        of 方法返回一个包含对对象引用的optional对象,如果参数为null,会抛空指针
        Optional<String> of = Optional.of("");
//         同上,不过参数可以为null
        Optional<String> fromNullable = Optional.fromNullable(null);
//         创建一个引用缺失的 optionnal实例
        Optional<Object> absent = Optional.absent();

 optional的使用,

从optional中获取引用

        /**从optional中获取引用**/
//         isPresent, 返回optional中的引用,如果不是null则为ture,否则 false
           fromNullable.isPresent();
//         get 获取optional中的引用, 如果为null会抛异常java.lang.IllegalStateException
           fromNullable.get();
//         or(default), 如果引用为null, 则返回默认
           fromNullable.or("default");
//        orNull, 如果引用为null,则返回null
        System.out.println(fromNullable.orNull());
//        返回Optional所包含引用的单例不可变集,如果引用存在,返回一个只有单一元素的集合,如果引用缺失为null,返回一个空集合。
        Set<String> asSet = fromNullable.asSet();

        /** 和 jdk8 的optional的转换*/
        java.util.Optional<String> s = fromNullable.toJavaUtil();
        

 

Google Guava 实战:集合增强、本地缓存与并发工具全解析 在Java工程开发中,集合转换、字符串解析、本地缓存等基础操作往往消耗大量时间,而手写工具类容易引入边界问题。Google Guava作为开源的核心Java类库,通过提供不可变集合、Multimap、BiMap、Table等高效数据结构,以及CacheBuilder、RateLimiter、EventBus等实用工具,大幅简化代码逻辑并提升系统稳定性。它弥补了JDK在集合语义和缓存管理上的不足,适用于后端服务、微服务公共模块及接口转译等场景。掌握Guava的依赖引入、集合增强、缓存回收策略与并发限流机制,能 阅读详情

相关推荐

assertj-guava:AssertJ Guava是特定于Guava类型(如Multimap,Optional或Table)的断言库

AssertJ断言番石榴 用于AssertJ断言为诸如Multimap , Table , ByteSource或Optional Guava类型提供断言。 请查看中的完整文档,包括。

使用Preconditions工具类进行代码的校验

Preconditions是guava提供的用于进行代码校验的工具类,其中提供了许多重要的静态校验方法,用来简化我们工作或开发中对代码的校验或预处理,能够确保代码符合我们的期望,并且能够在不符合校验条件的地方,准确的为我们显示出问题所在 guava进行了大量方法的重载,组成了Preconditions工具类,里面有14个静态方法 <!-- https://mvnrepository....

底层码农 6568

AI Agent实战:WorkBuddy安装部署、任务执行与模型接入全教程

AI Agent是当前自动化办公与智能工作流的核心技术,它区别于传统问答式AI,能够理解目标、拆解任务并调用工具交付完整成果。其底层原理基于任务规划、工具调用与结果验证的循环机制,让机器从“提供建议”进化为“完成任务”。在工程实践中,合理配置模型服务(如接入DeepSeek)、设计标准化Skill(技能包)与自定义指令,可以显著提升Agent在报告生成、数据分析、竞品调研等场景中的稳定性与效率。WorkBuddy作为典型的任务式AI工作台,为运营、产品、开发等多角色提供了统一入口,覆盖安装部署、任务描述公式

weixin_26712075的博客 288

每天进步一点点 --- Guava

Guava对基本操作的便利

qq_45759288的博客 618

大彩串口屏+LUA避坑指南:从Flash读写到控件状态配置的5个常见问题

本文针对大彩串口屏的LUA脚本开发,深度剖析了Flash数据存储与控件状态配置中的5个常见陷阱。重点讲解了如何通过标志位安全初始化Flash、正确处理多字节数据转换,以及如何精准配置按钮与文本控件的状态与事件响应,帮助开发者提升开发效率与代码可靠性。

weixin_27945229的博客 241

数字电子时钟——数字电路课设

本文设计了一种基于中小规模集成电路的数字电子时钟系统,采用模块化设计方法,包含晶振电路(CD4060+D触发器)、计时电路(74HC161计数器)、数码管驱动(CD4511)和整点报时功能。系统实现了60进制秒/分、24进制小时、7进制星期的计时显示,支持手动校时功能,并具备整点报时特性(59分54-58秒5次500Hz低音,59秒1次1000Hz高音)。通过分模块调试与整合,最终实物电路满足设计要求,获得优秀评价。

来自FZU——电子科学与技术专业 1487

Guava的基础功能与集合

Guava中的基础功能和集合

hefrankeleyn的博客 9035

MATLAB出现”警告: 名称不存在或不是目录“的解决方案

MATLAB出现 警告: 名称不存在或不是目录 的解决方案1. 出现错误2. 问题解释3. 解决方法4. 特殊情况5. 问题解决6. 多多点赞交流 1. 出现错误 打开MATLAB突然发现,出现下面的错误: 提示我们不存在这样的路径。 2. 问题解释 这样的错误很明显,我们曾经在预设路径中添加了这个文件夹。 在某种情况下,我们把它删除了,现在MATLAB找不到它了。 (这里我在桌面上添加了新建文件夹,然后将其添加到MATLAB的搜索路径中。之后把新建文件夹删除了,所以就会出现这样的报错) 3. 解决方法

qq_18820125的博客 5万+

优雅校验:Guava Preconditions使用指南

当使用Preconditions时,提供清晰的错误消息对于调试和维护至关重要。Preconditions.checkNotNull(userId, "更新用户资料失败:用户ID不能为空");Preconditions.checkNotNull(email, "更新用户资料失败:电子邮件不能为空");Preconditions.checkArgument(email.contains("@"), "更新用户资料失败:电子邮件格式不正确");// 更新用户资料的逻辑。

宋小黑的博客 1890

FineBI制作数据可视化大屏-数据连接(1)

快速上手大屏可视化,FineBI数据连接配置。

Pangaoyang_的博客 1909

Modbus CRC和LRC算法研究及代码实现

一、CRC(循环冗余校验) 1 CRC16实现流程 XOR = 异或 N = 字节的信息位 POLY = CRC16 多项式计算 = 1010 0000 0000 0001 (生成多项式 = 1 + x2 + x15 + x16) 在CRC16中,发送的第一个字节位低字节 2 CRC16实例推导 3 CRC16代码实现 unsigned short CRC16(unsigned char *a...

Hi, Boy 2891

Guava学习笔记(三):Preconditions优雅的检验参数

在日常开发中,我们经常会对方法的输入参数做一些数据格式上的验证,以便保证方法能够按照正常流程执行下去。对于可预知的一些数据上的错误,我们一定要做事前检测和判断,来避免程序流程出错,而不是完全通过错误处理来保证流程正确执行,毕竟错误处理是比较消耗资源的方式。在平常情况下我们对参数的判断都需要自己来逐个写方法判断,代码量不少并且复用性不高,如下所示: import org.junit.Test; ...

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

短信验证码接收平台完整搭建教程(超详细版,附完整源码)

在网站注册、用户登录、找回密码等功能中,验证码(特别是短信验证码)已成为验证用户身份的常见方式。本教程将详细介绍如何从零搭建一个短信验证码接收平台,用于保存、展示并管理来自短信网关或中间转发程序提交的验证码数据。✅ 教程适合有基本 Python/HTML 基础的开发者🚫 禁止用于任何违法用途,仅供学习参考✅ 支持通过 POST 接口接收短信验证码✅ 支持通过网页实时查看验证码历史记录✅ 验证码信息保存在 SQLite 数据库✅ 支持时间戳排序、查询最新验证码。

weixin_52548902的博客 4543

Google 开源的 Guava 工具库,太强大了~

点击上方“Github爱好者社区”,选择星标 回复“资料”,获取小编整理的一份资料 作者:张丰哲出处:www.jianshu.com/p/97778b21bd00目前Google Gu...

GitHub爱好者社区 2万+

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

从Optional到Preconditions:Guava基础包如何潜移默化地改变了我的Java编码习惯

本文探讨了Google Guava基础包如何通过Preconditions、Joiner/Splitter、Optional等工具类重塑Java编码习惯,提升代码的优雅性和可维护性。文章详细对比了Guava与JDK原生方法的优劣,并提供了现代Java生态中的最佳实践指南,帮助开发者更高效地使用这一强大的开源工具库。

weixin_30553777的博客 273

visio安装包

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

guava笔记1-Optional,Preconditions,Ordering,Objects,ComparisonChain,Throwables

 (1)Optional  标识可以为空的对象。   static &lt;T&gt; Optional&lt;T&gt; absent() 返回事实上的空对象。   static &lt;T&gt; Optional&lt;T&gt; of(T reference) 构造一个Optional对象。注意T不能为null,否则将抛异常。   static &lt;T&gt; Iterable&l...

昭明 260

为什么强烈推荐 Java 程序员使用 Google Guava 编程!

作者:张丰哲www.jianshu.com/p/97778b21bd00目前Google Guava在实际应用中非常广泛,本篇博客将以博主对Guava使用的认识以及在项目中的经验来给大家...

qq_14958051的博客 150

为什么我不建议你用阿里巴巴Java规范,而使用 Google Guava 编程?

来源:jianshu.com/p/97778b21bd00前言阿里巴巴出了一本Java规范,在国内java开发眼里被赋予了神圣的殿堂,我不推荐你用阿里巴巴的开发手册。目前Google G...

Java和Android架构 339

【Java基础系列】避免NPE的方法

在 Java 编程语言中,NPE 异常是指 NullPointerException 异常。当尝试访问或操作一个空对象(即 null)时,就会抛出此异常。简单来说,当您尝试在代码中引用一个未初始化的对象或变量时,就可能会遇到 NPE 异常。通常,它是由于代码中缺少必要的错误检查而导致的。处理这个异常的最佳方式是在编码过程中避免其发生。在 Java 中,NullPointerException(NPE)是最常见的异常之一。这种异常通常发生在应用程序试图使用值为 null 的引用类型变量时。

优快云站内信: https://i.youkuaiyun.com/#/msg/chat/qyj19920704 1077

为什么不建议Java程序员用阿里巴巴规范,而使用GoogleGuava编程

点击上方蓝色字体,选择“标星公众号”优质文章,第一时间送达99套Java企业级实战项目4000G架构师资料来自 :张丰哲链接 :www.jianshu.com/p/97778b21bd0...

公众号-老炮说Java 323

Java编程中避免空指针异常的10个最佳实践技巧

在Java中,最基本且最有效的避免空指针异常(NullPointerException, NPE)的方法是在使用对象引用之前对其进行显式的空值检查。可以使用简单的if语句判断对象是否为null,从而避免在null对象上调用方法或访问字段。这些工具可以在开发阶段捕获null值,帮助确保代码在预期条件下运行,并在出现问题时提供清晰的错误消息。这确保了调用方无需额外检查null,可以直接迭代或使用集合,而不会引发NPE,同时使代码更简洁。,可以更安全地处理可能为null的引用,减少NPE的风险。

wm_wd06的专栏 422

深入解析Java空指针异常:从JVM原理到Android实战预防

在Java编程中,空指针异常(NullPointerException)是常见的运行时错误,其本质是试图在值为null的对象引用上调用方法。从JVM视角看,当引用变量存储null值时,表示未指向任何堆内存对象,此时进行动态绑定和方法调用就会触发异常。这一机制虽然简单,却深刻反映了代码健壮性和设计严谨性问题。在工程实践中,空指针异常的高发场景包括未初始化变量、方法返回null、集合操作和链式调用等,尤其在Android开发中,生命周期管理和异步回调更易引发此类问题。通过理解JVM原理、掌握排查流程、采用Opt

weixin_30367169的博客 392

Preconditions前置条件 - Google Guava

Guava Preconditions类 前置条件:让方法调用的前置条件判断更简单,可以简单理解为 guava 提供的 assert 断言。 Guava 在 Preconditions 类中提供了若干前置条件判断的实用方法,每个方法都有三个变种: 没有额外参数:抛出的异常中没有错误消息; 有一个 Object 对象作为额外参数:抛出的异常使用 Object.toString() 作为...

程序员咏哥的博客 951

google guava工具包 checkNotNull的作用

checkNotNull 源码如下: Preconditions.checkNotNull(object); public static T> T checkNotNull(T reference) { if (reference == null) { throw new NullPointerException(); } return reference; } 使用

Fairy_Z的博客 1万+

Guava 断言

【代码】Guava 断言。

qq_43591265的博客 161
上一篇: guava--应用篇(一)字符串操作--splitter,joiner, Strings, Objects
下一篇: guava--应用篇(三)Ordering 和异常处理 Throwables
xiaoduup
博客等级 码龄9年 23粉丝 83原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值