首页 > 其他分享 >Guava Preconditions类的各种用法

Guava Preconditions类的各种用法

时间:2023-12-06 13:00:45浏览次数:45  
标签:Guava processNumber 抛出 用法 Preconditions null 方法 public

公众号「架构成长指南」,专注于生产实践、云原生、分布式系统、大数据技术分享。
Guava Preconditions类 提供静态方法列表,用于检查是否使用有效参数值调用方法或构造函数。如果前提条件失败,则会抛出指定的异常。

前置依赖

引入 pom

<dependency>
  <groupId>com.google.guava</groupId>
  <artifactId>guava</artifactId>
  <version>32.1.3-jre</version>
</dependency>

checkArgument

Preconditions类的checkArgument方法用于校验传递给调用方法的参数的正确性。该方法接收一个布尔条件,当条件为false时,抛出IllegalArgumentException异常。
让我们通过一些示例来看看如何使用这个方法。

import com.google.common.base.Preconditions;

public class ExampleClass {
    public void processNumber(int number) {
        Preconditions.checkArgument(number > 0, "Number must be positive");
        // 进行处理逻辑
    }

    public static void main(String[] args) {
        ExampleClass example = new ExampleClass();
        example.processNumber(10); // 正常调用,参数符合条件

        example.processNumber(-5); // 抛出IllegalArgumentException异常,参数不符合条件
    }
}

抛出带有模板的错误信息

public class PreconditionsTest {
    public void processNumber(int number) {
        Preconditions.checkArgument(number > 0, "Number must be positive: %s", number);
        // 进行处理逻辑
    }
    @Test
    public void testCheckArgumentTemplate() {
        processNumber(10);// 正常调用,参数符合条件
        processNumber(-5); // 抛出IllegalArgumentException异常,参数不符合条件,异常消息中包含具体的参数值
    }
}

在上述示例中,我们在checkArgument方法的第二个参数中使用了带有占位符的消息模板:"Number must be positive: %s"。该占位符%s表示在抛出异常时会被具体的参数值替换。在调用processNumber方法时,如果传递的参数不满足条件,将抛出IllegalArgumentException异常,并在异常消息中包含具体的参数值。

checkElementIndex

Preconditions类的checkElementIndex方法用于验证索引是否包含在集合中,如果不包含,该方法将抛出IndexOutOfBoundsException异常

   @Test
    public void testCheckElementIndex(){
        ArrayList<String> list = new ArrayList<>();
        list.add("apple");
        list.add("banana");
        list.add("orange");

        int index = 3;
        Preconditions.checkElementIndex(index, list.size(), "Invalid index");

        String element = list.get(index);
        System.out.println("Element at index " + index + ": " + element);
    }

在本例中,我们使用集合的size作为集合的大小参数,并提供了错误消息Invalid index。如果索引超出了集合的有效范围,将抛出异常并显示错误消息。
如果在范围内,则使用list.get方法获取指定索引的元素,并将其打印出来。

checkNotNull

checkNotNull方法检查作为参数提供的值是否为 null。如果不为 null 则返回校验后的值。如果传递给此方法的值为 null,则抛出NullPointerException。
以下是一个示例,说明了checkNotNull方法的使用:

  @Test
    public void testCheckNotNull(){
        String name = "John Doe";
        Preconditions.checkNotNull(name, "Name cannot be null");
        System.out.println("Name: " + name);
    }

在此示例中,我们使用checkNotNull方法验证字符串name是否为null。如果name不为null,将继续处理;如果name为null,将抛出NullPointerException异常,并显示错误消息"Name cannot be null"。

checkState

Preconditions类的checkState方法用于验证对象或程序的状态是否符合预期。以下是一个示例,说明了checkState方法的使用:

  @Test
    public void testCheckState() {
        int[] validStates = {-1, 0, 1};
        int givenState = 8;
        String message = "You have entered an invalid state";
        Preconditions.checkState(Arrays.binarySearch(validStates, givenState) > 0, message);
    }

在此示例中,我们使用checkState方法验证givenState是否包含在validStates数组中。如果false,则抛出IllegalStateException,并显示信息为You have entered an invalid state,否则继续处理;

总结

在本教程中,我们演示了Guava库中PreConditions类的各种方法。Preconditions类提供了静态方法的集合,用于验证参数是否有效。

代码地址:https://github.com/dongweizhao/guava-example

标签:Guava,processNumber,抛出,用法,Preconditions,null,方法,public
From: https://www.cnblogs.com/waldron/p/17879264.html

相关文章

  • 技术博客:Vue中各种混淆用法汇总
    ​ 技术博客:Vue中各种混淆用法汇总 摘要本文主要介绍了在Vue中使用的一些常见混淆用法,包括newVue()、exportdefault{}、createApp()、Vue.component、Vue3注册全局组件、Vue.use()等,以及如何使用混淆器对代码进行加固,保护应用安全。引言在Vue开发中,对于新手来说,常常会......
  • STL用法
    1.vector数组从尾部插入,尾部删除。相关用法代码如下:1//1.尾部插入及删除数字2vec2.push_back(1);//尾部插入元素3vec2.pop_back()//删除尾部元素45//2.使用下标访问元素,6cout<<vec2[0]<<endl;//记住下标是从0开始的......
  • System.Diagnostics.Process.Start 用法
    原文链接:https://blog.csdn.net/polloo2012/article/details/82110642System.Diagnostics.Process.Start();能做什么呢?它主要有以下几个功能:1、打开某个链接网址(弹窗)。2、定位打开某个文件目录。3、打开系统特殊文件夹,如“控制面板”等。那么它是怎么实现这几个功能的呢?在讲......
  • 深入探讨Guava的缓存机制
    第1章:引言大家好,我是小黑,今天咱们聊聊GoogleGuava的缓存机制。缓存在现代编程中的作用非常大,它能提高应用性能,减少数据库压力,简直就是性能优化的利器。而Guava提供的缓存功能,不仅强大而且使用起来非常灵活。在咱们深入挖掘之前,先简单说说缓存。缓存,其实就是一种保存数据的手段......
  • 使用 Guava Retry 优雅的实现重试机制
    王有志,一个分享硬核Java技术的互金摸鱼侠加入Java人的提桶跑路群:共同富裕的Java人大家好,我是王有志。今天我会通过一个真实的项目改造案例和大家聊一聊如何优雅的实现Java中常用的的重试机制。业务背景在我们的系统中当客户完成支付后,保单管理系统会通过MQ推送出一条包......
  • awk常见用法(更新中)
    来源十分钟学习awk命令常用将Linux命令输出结果的第n列的所有内容过滤出来:ps|awk'{print$1}'这个列的分隔符默认是会把空格给排除掉。如果是类似于path变量这种,使用冒号作为分割,可以使用-F选项:awk-F':''{print$1}'打印多列则将以上print部分修改为:ps|......
  • mapstruct 高级用法自定义转换规则
    https://svip888.blog.csdn.net/article/details/115706803?spm=1001.2101.3001.6650.15&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-15-115706803-blog-117566307.235%5Ev39%5Epc_relevant_3m_sort_dl_base3&depth_1-utm_sourc......
  • .NET Core C#系列之UseStaticFiles静态文件高级用法
    转自:https://blog.csdn.net/sD7O95O/article/details/130002295静态文件解决跨域代码如下:1app.UseStaticFiles(newStaticFileOptions2{3OnPrepareResponse=(c)=>4{5......
  • go const 用法
    packagemainimport"fmt"funcmain(){//声明变量//iota//iota,特殊常量,可以认为是一个可以被编译器修改的常量。//在每一个const关键字出现时,被重置为0,然后再下一个const出现之前,每出现一次iota,其所代表的数字会自动增加1。//iota可以被用......
  • .NET(C#) new 关键字的三种用法
    在.NET中使用C#编程时,new关键字具有多种用途,主要包括实例化对象、隐藏继承的成员以及创建匿名类型。下面详细介绍这些用途:1.实例化对象new关键字最常见的用途是创建一个类的实例。当使用new创建对象时,它为对象分配内存并调用构造函数来初始化该对象。这是创建任何类或......