com.google.common.base.Preconditions

2023-10-27

前提条件

Guava提供了许多前置条件检查实用程序。我们强烈建议您静态导入这些内容。

每种方法都有三种变体:

  1. 没有额外的争论。抛出任何异常都没有错误消息。
  2. 一个额外的Object论点。抛出任何异常并显示错误消息 object.toString()
  3. 一个额外的String参数,带有任意数量的附加Object 参数。这类似于printf,但对于GWT的兼容性和效率,它只允许使用%s指标。
    • 注:checkNotNullcheckArgument并且checkState有大量服用的原始组合和过载的Object 参数,而不是一个可变参数阵列-这使得上面的调用,如那些以避免两个原始拳击,并在绝大多数情况下varags数组分配。

第三种变体的例子:

checkArgument(i > =  0,“参数是%s但预期非负”,i);
checkArgument(i < j,“预期i <j,但%s> =%s ”,i,j);
签名(不包括额外的args) 描述 失败时抛出异常
checkArgument(boolean) 检查boolean是的true。用于验证方法的参数。 IllegalArgumentException
checkNotNull(T) 检查该值是否为null。直接返回值,因此您可以使用checkNotNull(value)内联。 NullPointerException
checkState(boolean) 检查对象的某些状态,而不依赖于方法参数。例如,Iterator可以使用它来检查next在调用之前是否已调用remove IllegalStateException
checkElementIndex(int index, int size) 检查index是具有指定大小的列表,字符串或数组的有效元素索引。元素索引的范围可以从0到size 包含。您不直接传递列表,字符串或数组; 你只是通过它的大小。
退货index IndexOutOfBoundsException
checkPositionIndex(int index, int size) 检查具有指定大小的列表,字符串或数组中index的有效位置索引。位置索引的范围可以从0到size包括 0 。您不直接传递列表,字符串或数组; 你只是通过它的大小。
退货index IndexOutOfBoundsException
checkPositionIndexes(int start, int end, int size) 检查[start, end)具有指定大小的列表,字符串或数组的有效子范围。附带自己的错误消息。 IndexOutOfBoundsException

出于几个原因,我们倾向于使用自己的前置条件检查,例如来自Apache Commons的类似实用程序。简述:

  • 静态导入后,Guava方法清晰明确。 checkNotNull清楚地表明正在做什么,以及将抛出什么异常。
  • checkNotNull验证后返回其参数,允许构造函数中的简单单行:this.field = checkNotNull(field);
  • 简单,varargs“printf-style”异常消息。(这个优势也是我们建议继续使用checkNotNull的原因Objects.requireNonNull

我们建议您将前提条件拆分为不同的行,这可以帮助您确定调试时哪些前提条件失败。此外,您应该提供有用的错误消息,这在每个检查都在自己的行上时更容易。

代码


public class Test {

    static User user ;
    public static void main(String[] args) {

        //错误一
        Preconditions.checkArgument(1==1,"{%s}","sss");

        //错误二
        Preconditions.checkNotNull(user);

        //错误三
        Preconditions.checkElementIndex(20,19,"越界");
    }

}


错误一

Exception in thread "main" java.lang.IllegalArgumentException: {出错了}
    at com.google.common.base.Preconditions.checkArgument(Preconditions.java:216)
    at com.boolib.vcheck.Test.main(Test.java:11)

错误二

Exception in thread "main" java.lang.NullPointerException
    at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:877)
    at com.boolib.vcheck.Test.main(Test.java:13)

错误三

Exception in thread "main" java.lang.IndexOutOfBoundsException: 越界 (20) must be less than size (19)
    at com.google.common.base.Preconditions.checkElementIndex(Preconditions.java:1329)
    at com.boolib.vcheck.Test.main(Test.java:14)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

com.google.common.base.Preconditions 的相关文章

  • 智能语音技术的深度解析

    欢迎大家前往腾讯云 社区 获取更多腾讯海量技术实践干货哦 本文由腾讯云AI中心发表于云 社区专栏 广义上来讲智能语音技术有各种各样的定义 以上是常见的一些热门的场景 语音识别 刚才罗老师也分享了部分内容 语音合成是文字变成语音 这部分我们后
  • Linux 引导过程概述

    引导过程 一 引导过程 引导过程总览 1 开机自检 2 MBR引导 3 GRUB菜单 4 加载Linux 内核 5 INIT 进程初始化 二 INIT 进程 1 INIT进程 2 inittab 配置文件 inittab文件中的字段 1 i
  • 手写线程池

    package cn pzh xzh javaee thread import javafx concurrent Worker import java util ArrayList import java util LinkedList
  • 【AD20学习笔记】PCB设计规则设置及手工布线

    7 21 今天干了啥 7 22 7 23 7 24 啊 咋24号了 回流为什么要打孔啊 数字地 信号地的区别 本章快捷键 shift E 捕捉捕捉不到的点 可以控制高亮的亮度 L 表示显示的板层 网络可以右击选择改变颜色 然后选择显示替换
  • C# 一种求平方根的方法 立方根也可以 极大 极小都可以

    不知道研究这些干啥 纯纯的浪费时间 public static double TQSquare double number Random random1 new Random DateTime Now Millisecond double
  • 少儿编程教育机构

    计算机就像一个人 才刚刚清醒 但已经改变了生活中的很多东西 革新了旧行业 也出现了许多新的商业模式 比如 淘宝购物 滴滴打车 支付宝付款 高德地图导航等这些习以为常的App 以及作为纽带的互联网 无不来自于我们所编写的程序 格物斯坦小坦克认
  • python期末版二版-习题题库

    Python程序设计 题库 一 填空题 1 Python安装扩展库常用的是 工具 pip 2 Python标准库math中用来计算平方根的函数是 sqrt 3 Python程序文件扩展名主要有 和两种 其中后者常用于GUI程序 py pyw
  • vue获取当前时间的前七天日期

  • SpringBoot项目配置国际化

    1 引言 效果 1 根据浏览器默认语言设置的信息切换国际化 2 点击链接切换语言 2 配置步骤 1 设置file encoding 如果不设置 获取properties内容会乱码 当前项目配置 点击setting搜索file encodin
  • 报错Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution).解决方法

    在Ubuntu中用apt get安装软件 系统报出Unmet dependencies错误 Unmet dependencies Try apt fix broken install with no packages or specify
  • MYSQL的慢查询

    通过查询SQL的执行频次 我们就能够知道当前数据库到底是增删改为主 还是查询为主 那假如说是以查询为主 次数我们可以借助于慢查询日志 接下来 我们就来介绍一下MySQL中的慢查询日志 慢查询日志 慢查询日志记录了所有执行时间超过指定参数 l
  • 基于RuoYi框架快速搭建自己的后台管理系统

    RuoYi的介绍 RuoYi是一个后台管理系统 基于经典技术组合 Spring Boot Apache Shiro MyBatis Thymeleaf 主要目的让开发者注重专注业务 降低技术难度 从而节省人力成本 缩短项目周期 提高软件安全
  • 极路由2刷机为openwrt固件

    1 随着极路由插件app hiwifi com网站关闭 极路由现在想要活动root权限以及刷其他固件就变得很麻烦 最近家里的极路由2发现网络好像经常有问题不知道是不是固件问题 于是就想着刷固件 型号 极路由2 产品 HC5761 2 很多刷
  • numba.cuda OpenCV 图像处理

    文章目录 一 什么是numba 二 代码实现 三 实验结果 一 什么是numba python numba numba cuda numba能够帮助python进行动态编译 JIT 通过借助numba cuda可以实现对GPU的动态编译 实
  • html设置鼠标移入移出样式,vue鼠标移入添加class样式,鼠标移出去除样式(active)实现方法...

    鼠标移入添加class样式 HTML HTML绑定事件 加入或者移出class为active 流量套餐 JS 这里除了active这个class需要动态添加或者减去 其他的皆是移入移出都需要的class methods changeActi
  • 网页前端(HTML)

    CSS 下拉菜单 使用 CSS 创建一个鼠标移动上去后显示下拉菜单的效果 基本下拉菜单 当鼠标移动到指定元素上时 会出现下拉菜单 HTML 部分 我们可以使用任何的 HTML 元素来打开下拉菜单 如 span 或 a span
  • 小程序和H5上传图片转成Base64格式

    小程序和H5上传图片转成Base64格式 文章目录 小程序和H5上传图片转成Base64格式 前言 一 Base64是什么 二 Base转换 小程序的转换 小程序使用getFileSystemManager来获取文件管理器 使用 fileM
  • springboot里结合layui对表格数据的一些记录

    js代码 var layui active reload function 处理人的选择 var handler handler input name handler checked val 获取选中的值 var systemNo var
  • OpenSSL中AES加密的用法

    OpenSSL中AES加密的用法 作者 游蓝海 原文链接 http blog csdn net you lan hai article details 50992719 转载请注明出处 使用API的时候 需要特别小心数据长度 我在初次使用的
  • 美学生用ChatGPT写论文被识破,导师:好到不符合我对学生的预期

    据央视网快看微博3月20日消息 北密歇根大学的教授奥曼在学生作业中发现了一篇关于世界宗教的 完美论文 这篇文章写得比大多数学生都要好 好到不符合我对学生的预期 他去问ChatGPT 这是你写的吗 ChatGPT回答 99 9 的概率是的 C

随机推荐

  • Vue项目运行报错:“TypeError: Cannot read properties of undefined (reading ‘$on‘)“

    报错原因 无法读取未定义的属性 on 解决方法 在main js加入代码 event Bus 用于无关系组件间的通信 Vue prototype bus new Vue 我是零基础自学的菜鸟 想把这里作为笔记记录 下来我在编程路上遇到的bu
  • 政企市场,「观望」AI大模型

    数据安全等 刚需 下 私有化成为政企市场的准入门槛 然而私有化下 行业模型局限性尚未可知 加之信创化等因素 厂商仍需取长补短 为政企客户提供全方位的解决方案 作者 斗斗 编辑 皮爷 出品 产业家 政企领域 似乎正在成为AI落地的又一标的 几
  • 持安-大连万达集团零信任项目入选中国信通院2023零信任优秀案例

    2023年8月25日 以 链接云端 可信而安 为主题的 2023首届SecGo云和软件安全大会 在京隆重召开 会上 中国信息通信研究院重磅揭晓了 安全守卫者计划 优秀案例评选结果 零信任办公安全技术创新企业持安科技 与用户大连万达集团联合申
  • jackson 包版本低导致java.lang.NoSuchMethodError

    1 起因 本地window10项目运行无误 发布项目到正式环境Liunx系统后编译打包部署都没有问题 但是验证一个双因子认证功能时就报错 2 我看到这个错误 就知道肯定是 Maven 依赖问题 要么是版本冲突 存在不同版本的 2 个相同依赖
  • vite与webpack区别

    vite与webpack区别 在浏览器支持 ES 模块之前 JavaScript 并没有提供的原生机制让开发者以模块化的方式进行开发 这也正是我们对 打包 这个概念熟悉的原因 使用工具抓取 处理并将我们的源码模块串联成可以在浏览器中运行的文
  • Xilinx 7 系列 serdes速度

    目录 一 各器件的速率 一 各器件的速率 High speed interfaces including Serial ATA Aurora 1G Ethernet PCI Express OBSAI CPRI EPON GPON Disp
  • 将图片通过高通滤波进行锐化处理_AI智能图片清晰放大神器强势来袭,简直无敌了[189期]...

    获取方式请查看文章底部 点击上方 知秋设计素材 点右上角 点选 设为星标 AI智能图片无损放大神器 MAC WIN AI智能图片锐化清晰神器 mac win AI智能图片无损放大神器 Topaz A I Gigapixel是一款非常实用的A
  • Jenkins在centos环境下连接gitee报错问题

    问题描述 在centos环境下jenkins配置gitee时测试连接出现无法连接ERROR问题 期初怀疑是加速镜像导致gitee插件失效问题 后来看了后台错误日志后发现在centos环境下缺失jar包 之前在windows环境下测试不会出现
  • buildroot教程

    什么是buildroot Buildroot是Linux平台上一个开源的嵌入式Linux系统自动构建框架 0 下载buildroot Buildroot版本每2个月 2月 5月 8月和11月发布一次 版本号的格式为YYYY MM 例如201
  • 【翻译】全新16英寸MacBook Pro评测:开发人员的梦想成真

    要问现在适合开发者用的笔记本 市面上还是有很多选择的 比如Dell的XPS系列 外星人系列 游戏也是杠杠滴 联想拯救者系列 还有形形色色的高配机型 价格也从几千到几万不等 但是 笔吧评测室的猪哥说过 从一万元开始 就已经难以用定位的方式来给
  • Mycat windows安装

    id iframe1033655 0 src http pos baidu com jcrm rtbid 2097325 rdid 9223372032564562618 dc 2 di 1033655 dri 0 dis 0 dai 1
  • 报错:JSONException: illegal identifier : \pos 1, line 1, column 2 或not close json text, token : error

    报错 JSONException illegal identifier pos 1 line 1 column 2 或JSONException not close json text token error 简述问题 处理 结果 简述问题
  • spring IOC控制反转及IOC实现的三种方式和bean标签使用

    spring IOC控制反转及IOC实现的三种方式和bean标签使用 IOC 控制反转 简单的说是指对象的创建不再使用new 而是由spring框架创建 当服务器开始运行时 读取spring的主配置文件 经过spring框架从主配置文件中识
  • 黄勇-flask教程-学习笔记

    课时4 虚拟环境 pip install virtualenv 安装虚拟环境 virtualenv venv 创建虚拟环境 venv Scripts activate 激活虚拟环境 课时10 url反转 url for url for引用视
  • linux命令如何查看dns,linux查看dns命令

    linux下我们要查看服务器的DNS信息可以通过命令来实现 下面由学习啦小编为大家整理了linux查看dns命令的相关知识 希望对大家有帮助 linux查看dns命令1 查看 etc resolv con文件 root localhost
  • 索引原理学习

    一 介绍 1 什么是索引 一般的应用系统 读写比例在10 1左右 而且插入操作和一般的更新操作很少出现性能问题 在生产环境中 我们遇到最多的 也是最容易出问题的 还是一些复杂的查询操作 因此对查询语句的优化显然是重中之重 说起加速查询 就不
  • linux安装jdk tar包

    1 java删除openJDK rpm qa grep java rpm e nodeps 查出来的java软件 例 rpm e nodeps java 1 8 0 openjdk headless 1 8 0 101 3 b13 el7
  • Elasticsearch好用查询插件分享

    以前我常用的ES查询工具是Head 作为插件形式在浏览器中运行 挺方便的 后来发现head不太好用 比如在数据浏览的时候 不小心就点击了两个索引 背景色设置的还不够明显 比较容易看错数据的 于是想找个更好用的工具 以前用过cerebro 觉
  • Linux内核学习(二):Bootloader

    Linux内核学习 二 UBOOT 在上一篇的文章中通过图片介绍了linux镜像的生成与加载 引出了一个东西叫uboot 是这个玩意一手把生成的内核镜像加载进去的 于是在进一步之前 我们得看看学习一下什么是Uboot 以及其工作流程和逻辑
  • com.google.common.base.Preconditions

    前提条件 Guava提供了许多前置条件检查实用程序 我们强烈建议您静态导入这些内容 每种方法都有三种变体 没有额外的争论 抛出任何异常都没有错误消息 一个额外的Object论点 抛出任何异常并显示错误消息 object toString 一