Google Guava学习笔记——基础工具类Preconditions类的使用

  Preconditions类是一组静态方法用来验证我们代码的状态。Preconditons类很重要,它能保证我们的代码按照我们期望的执行,如果不是我们期望的,我们会立即得到反馈是哪里出来问题,现在我们使用Preconditions来保证我们代码的行为,并且对调试也非常方便。

  当然,你也可以自己写预处理的代码,就像下面一样:

if (someObj == null) {
        throw new IllegalArgumentException(" someObj must not be null");
    }

  但使用Preconditions类来处理参数为空的情况,会更加清晰可读:

Preconditions.checkNotNull(label, "Label can‘t not be null");

  下面的类演示了Preconditions类的使用:

  

package com.guava.felix;

import com.google.common.base.Preconditions;

public class PreconditionsDemo {

    private String label;

    private int[] values = new int[5];

    private int currentIndex;

    public PreconditionsDemo(String label) {
    this.label = Preconditions.checkNotNull(label, "Label can‘t not be null");
    }

    public void updateCurrentIndexValue(int index, int valueToSet) {
    // check index valid first
    this.currentIndex = Preconditions.checkElementIndex(index, values.length, "Index out of bounds for values.");
    // validate valueToSet
    Preconditions.checkArgument(valueToSet <= 100, "Value can‘t be more than 100");
    values[this.currentIndex] = valueToSet;
    }

    public void doOperation() {
    Preconditions.checkState(validateObjectState(), "Can‘t perform operation.");
    }

    private boolean validateObjectState() {
    return this.label.equalsIgnoreCase("open") && values[this.currentIndex] == 10;
    }

    public static void main(String[] args) {
    PreconditionsDemo demo = new PreconditionsDemo("open");

    demo.updateCurrentIndexValue(4, 10);

    demo.doOperation();

    }

}

 下面是例子中四个方法的总结:

  checkNotNull(T object, Object message): object对象不为空的话返回,否则抛出异常。

  checkElementIndex(int index, int size, Object message): index表示你要访问的数组,集合,字符串的位置,size表示的是长度,如果 index是有效的则返回,否则抛出异常;

  checkArgument(Boolean expression, Object message):这个方法根据传递进来的参数是否满足方法中的逻辑判断,如果符合,返回true,否则抛出异常。

  checkStatus(Boolean expression, Object message):这个方法没有参数,它判断一个对象的状态,期望返回true,否则抛出异常。

时间: 2024-10-17 14:15:22

Google Guava学习笔记——基础工具类Preconditions类的使用的相关文章

Google Guava学习笔记——基础工具类String处理类的使用

不管你喜欢何种编程语言,很多时候针对string编程的处理都是乏味而且爱出错误的,很多时候,我们需要从文件或是数据库中读取数据,或者根据需求重新格式化或排序字符串给用户显示.幸运的是,Guava提供了一些非常有用的类,来很容易的处理String的问题,这些类有: CharMatcher Charsets Strings 使用Charsets类 在Java平台,Java支持6种标准字符集,它经常出现在下面的代码中: byte[] bytes = someString.getBytes(); 但上面

Google Guava学习笔记——简介

Google Guava是什么东西?首先要追溯到2007年的“Google Collections Library”项目,它提供对Java 集合操作的工具类.后来Guava被进化为Java程序员开发必备的工具.Guava可以对字符串,集合,并发,I/O,反射进行操作. 在软件开发过程中,我们自认为可以什么都能做,我们本能的去写自己的类库来处理一些日常的问题.当然,我们认为自己写的代码是坚不可摧的,并且是经过单元测试的.实际上,我们没有我们认为的那么聪明,换句话说,它不在于你有多聪明,而是在于编写

Guava学习笔记:Google Guava 类库简介

> Guava 是一个 Google 的基于java1.6的类库集合的扩展项目,包括 collections, caching, primitives support, concurrency libraries, common annotations, string processing, I/O, 等等. 这些高质量的 API 可以使你的JAVa代码更加优雅,更加简洁,让你工作更加轻松愉悦.下面我们就开启优雅Java编程学习之旅! 项目相关信息: 官方首页:http://code.googl

Guava学习笔记:guava中的Preconditions使用

Guava学习笔记:guava中的Preconditions使用 转载:http://outofmemory.cn/java/guava/base/Preconditions google guava的base包中提供的Preconditions类用来方便的做参数的校验,他主要提供如下方法: checkArgument 接受一个boolean类型的参数和一个可选的errorMsg参数,这个方法用来判断参数是否符合某种条件,符合什么条件google guava不关心,在不符合条件时会抛出Illeg

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

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

Guava学习笔记目录

Guava 是一个 Google 的基于java1.6的类库集合的扩展项目,包括 collections, caching, primitives support, concurrency libraries, common annotations, string processing, I/O, 等等. 这些高质量的 API 可以使你的JAVa代码更加优雅,更加简洁,让你工作更加轻松愉悦.下面是学习过程中的一些笔记和知识点的记录. 1.Guava学习笔记:Google Guava 类库简介 2

Guava学习笔记: guava集合之Multiset

Guava学习笔记: guava集合之Multiset Multiset是什么? Multiset看似是一个Set,但是实质上它不是一个Set,它没有继承Set接口,它继承的是Collection<E>接口,你可以向Multiset中添加重复的元素,Multiset会对添加的元素做一个计数. 它本质上是一个Set加一个元素计数器. Multiset使用示例: package cn.outofmemory.guava.collection; import com.google.common.ba

Guava学习笔记:guava中对字符串的操作

Guava学习笔记:guava中对字符串的操作 转载:http://outofmemory.cn/java/guava/base/Strings 在google guava中为字符串操作提供了很大的便利,有老牌的判断字符串是否为空字符串或者为null,用指定字符填充字符串,以及拆分合并字符串,字符串匹配的判断等等. 下面我们逐一了解这些操作: 1. 使用com.google.common.base.Strings类的isNullOrEmpty(input)方法判断字符串是否为空        

Guava学习笔记: guava中的对象封装操作

Guava学习笔记: guava中的对象封装操作 转载:http://outofmemory.cn/java/guava/base/Objects 我们在开发中经常会需要比较两个对象是否相等,这时候我们需要考虑比较的两个对象是否为null,然后再调用equals方法来比较是否相等,google guava库的com.google.common.base.Objects类提供了一个静态方法equals可以避免我们自己做是否为空的判断,示例如下:         Object a = null;