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,否则抛出异常。

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

  1. Google Guava学习笔记——基础工具类Joiner的使用

    Guava 中有一些基础的工具类,如下所列: 1,Joiner 类:根据给定的分隔符把字符串连接到一起.MapJoiner 执行相同的操作,但是针对 Map 的 key 和 value. 2,Spli ...

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

    不管你喜欢何种编程语言,很多时候针对string编程的处理都是乏味而且爱出错误的,很多时候,我们需要从文件或是数据库中读取数据,或者根据需求重新格式化或排序字符串给用户显示.幸运的是,Guava提供了 ...

  3. Google Guava学习笔记——基础工具类针对Object类的使用

    Guava 提供了一系列针对Object操作的方法. 1. toString方法 为了方便调试重写toString()方法是很有必要的,但写起来比较无聊,不管如何,Objects类提供了toStrin ...

  4. Google Guava学习笔记——基础工具类Splitter的使用

    另一项经常对字符串的操作就是根据指定的分隔符对字符串进行分隔.我们基本上会使用String.split方法: String testString = "Monday,Tuesday,,Thu ...

  5. Google Guava学习笔记——简介

    Google Guava是什么东西?首先要追溯到2007年的“Google Collections Library”项目,它提供对Java 集合操作的工具类.后来Guava被进化为Java程序员开发必 ...

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

    转自:http://www.cnblogs.com/peida/p/Guava_Preconditions.html 在日常开发中,我们经常会对方法的输入参数做一些数据格式上的验证,以便保证方法能够按 ...

  7. Guava学习笔记:Preconditions优雅的检验参数

    在日常开发中,我们经常会对方法的输入参数做一些数据格式上的验证,以便保证方法能够按照正常流程执行下去.对于可预知的一些数据上的错误,我们一定要做事前检测和判断,来避免程序流程出错,而不是完全通过错误处 ...

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

    http://www.cnblogs.com/peida/p/guava_preconditions.html 在日常开发中,我们经常会对方法的输入参数做一些数据格式上的验证,以便保证方法能够按照正常 ...

  9. Guava学习笔记目录

    Guava 是一个 Google 的基于java1.6的类库集合的扩展项目,包括 collections, caching, primitives support, concurrency libra ...

随机推荐

  1. 14种网页图片和文字特效的jQuery插件代码

    1.网页图片3d旋转jQuery代码 演示和下载地址 2.存css3实现的tabl选项卡代码 演示和下载地址 3.jQuery标签旋转代码 演示和下载地址 4.鼠标悬浮的图片选项卡代码 演示和下载地址 ...

  2. css style与class之间的区别,cssclass

    问题描述:    网页点击[导出]按钮后,将页面table内容另存成excel文件,却发现无法保存表格样式 分析过程: 1.table表格用class,而不是style.导出时并没有导出class定义 ...

  3. 关于SQL表联接

    以SQL2008为例,Microsoft SQL Server 2008支持四种表运算符-JOIN,APPLY,PIVOT,UNPIVOT.JOIN表运算符是ANSI标准,而其他三种是T-SQL对标准 ...

  4. c语言学习的第10天

    #include <stdio.h> int main() { int many; printf("你想看几次?"); scanf("%d",&am ...

  5. 使用maven, myeclipse工具构建spring mvc项目

    一.使用myeclipse 创建一个新的 maven项目. (ps:1.在filter过滤的时候输入 webapp 选择"maven-archetype-webapp". 2.在m ...

  6. Nginx 403 forbidden的解决办法

    Nginx 403 forbidden的解决办法. 常见的,引起nginx 403 forbidden有二种原因,一是缺少索引文件,二权限问题. 1.缺少index.html或者index.php文件 ...

  7. 比较C++中的4种类型转换方式

    C++的四种cast操作符的区别并非我的原创-------------------------------------------from:http://blog.csdn.net/hrbeuwhw/ ...

  8. vim之旅

    本人是今年的毕业生, 大学很莫名的选择了一个电子商务专业. 由于专业没有实质性的东西可学,加上对电商不敢兴趣, 于是乎我有了大量的时间在宿舍里折腾电脑. 折腾了几年大三决定转业, 大四在还没找工作之前 ...

  9. 5.css字体

    下面的用一个表格总结了文本样式中字体的一些设置方法: 属性名 说明 CSS 版本 font-size 设置字体的大小 1 font-variant 设置英文字体是否转换为小型大写 1 font-sty ...

  10. Python脚本控制的WebDriver 常用操作 <十二> send_keys模拟按键输入

    下面将使用WebDriver中的send_keys来模拟键盘按键输入 测试用例场景 send_keys方法可以模拟一些组合键操作: ctrl+a ctrl+c ctrl+v 等. 另外有时候我们需要在 ...