转载:https://my.oschina.net/realfighter/blog/349819

Preconditions是guava提供的用于进行代码校验的工具类,其中提供了许多重要的静态校验方法,用来简化我们工作或开发中对代码的校验或预 处理,能够确保代码符合我们的期望,并且能够在不符合校验条件的地方,准确的为我们显示出问题所在。

checkArgument(boolean expression):用来校验表达式是否为真,一般用作方法中校验参数

checkArgument(boolean expression, @Nullable Object errorMessage):校验表达式是否为真,不为真时显示指定的错误信息。

checkArgument(boolean expression, @Nullable String errorMessageTemplate, @Nullable Object... errorMessageArgs):校验表达式是否为真,不为真时显示错误信息,错误信息中允许使用占位符。

checkState(boolean expression):校验表达式是否为真,一般用作校验方法返回是否为真。

checkState(boolean expression, @Nullable Object errorMessage):当表达式为假的时候,显示指定的错误信息。

checkState(boolean expression,@Nullable String errorMessageTemplate,@Nullable Object... errorMessageArgs):允许在错误信息中使用占位符。

checkNotNull(T reference):校验对象是否为空。

checkNotNull(T reference, @Nullable Object errorMessage):对象为空时显示指定的错误信息。

checkNotNull(T reference, @Nullable String errorMessageTemplate,@Nullable Object... errorMessageArgs):允许在错误信息中使用占位符。

checkElementIndex( int index, int size, @Nullable String desc):校验元素的索引值是否有效,index大于等于0小于size,在无效时显示错误描述信息。

checkElementIndex(int index, int size):错误描述信息为“index”

checkPositionIndex(int index, int size, @Nullable String desc):校验元素的索引值是否有效,index大于等于0小于等于size,在无效时显示错误描述信息。

checkPositionIndex(int index, int size):错误描述信息为“index”

checkPositionIndexes(int start, int end, int size):校验大于等于start,小于end的list的长度是否为size。

public class PreconditionsTest {

// 打印输出方法

private static void print(Object obj) {

System.out.println(String.valueOf(obj));

}

// 测试方法

private static boolean testMethod() {

return 1 > 2;

}

// 测试对象

private static Object testObject() {

return null;

}

public static void main(String[] args) {

// checkArgument

try {

// 校验表达式是否正确,并使用占位符输出错误信息

Preconditions.checkArgument(1 > 2, "%s is wrong", "1 > 2");

} catch (IllegalArgumentException e) {

print(e.getMessage()); // 1 > 2 is wrong

}

// checkState

try {

// 校验表达式是否正确,并使用占位符输出错误信息,使用方法作为表达式,一般用作校验方法返回是否为真

Preconditions.checkState(testMethod(), "%s is wrong", "testMethod()");

} catch (IllegalStateException e) {

print(e.getMessage()); // testMethod() is wrong

}

// checkNotNull

try {

// 校验对象是否为空,并使用占位符输出错误信息

Preconditions.checkNotNull(testObject(), "%s is null", "testObject()");

} catch (NullPointerException e) {

print(e.getMessage()); // testObject() is null

}

// 初始化测试用list

List<Integer> list = new ArrayList<Integer>();

for (int i = 0; i < 10; i++) {

list.add(i);

}

// checkElementIndex

try {

// 校验元素索引是否有效 ,使用checkPositionIndex校验

Preconditions.checkElementIndex(10, list.size());

// 在临界值size处产生异常

} catch (IndexOutOfBoundsException e) {

print(e.getMessage()); // index (10) must be less than size (10)

}

// checkPositionIndex

try {

// 校验元素索引是否有效,使用checkPositionIndex校验

Preconditions.checkPositionIndex(10, list.size());

// 在临界size处不产生异常

// print("checkPositionIndex does not throw IndexOutOfBoundsException");

} catch (IndexOutOfBoundsException e) {

print(e.getMessage()); // checkPositionIndex does not throw

// IndexOutOfBoundsException

}

// checkPositionIndexes

try {

// 校验是否是有效的索引区间

Preconditions.checkPositionIndexes(3, 11, list.size());

} catch (IndexOutOfBoundsException e) {

print(e.getMessage()); // end index (11) must not be greater than

// size (10)

}

}

}

guava学习--Preconditions的更多相关文章

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

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

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

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

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

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

  4. Guava学习笔记目录

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

  5. guava 学习笔记 使用瓜娃(guava)的选择和预判断使代码变得简洁

    guava 学习笔记 使用瓜娃(guava)的选择和预判断使代码变得简洁 1,本文翻译自 http://eclipsesource.com/blogs/2012/06/06/cleaner-code- ...

  6. Guava学习

    Guava学习笔记目录 Guava 是一个 Google 的基于java1.6的类库集合的扩展项目,包括 collections, caching, primitives support, concu ...

  7. [置顶] Guava学习之Lists

    Lists类主要提供了对List类的子类构造以及操作的静态方法.在Lists类中支持构造ArrayList.LinkedList以及newCopyOnWriteArrayList对象的方法.其中提供了 ...

  8. guava 学习笔记(二) 瓜娃(guava)的API快速熟悉使用

    guava 学习笔记(二) 瓜娃(guava)的API快速熟悉使用 1,大纲 让我们来熟悉瓜娃,并体验下它的一些API,分成如下几个部分: Introduction Guava Collection ...

  9. [置顶] Guava学习之ArrayListMultimap

    ArrayListMultimap类的继承关系如下图所示: Guava ArrayListMultimap List Multimap 是一个接口,继承自 Multimap 接口.ListMultim ...

随机推荐

  1. Android应用的安全的攻防之战

    一.前言 在前两篇破解的文章中,我们介绍了如何使用动态调试来破解apk,一个是通过调试smali源码,一个是通过调试so代码来进行代码的跟踪破解,那么今天我们就这两篇文章的破解方法,来看看Androi ...

  2. 在ubuntu 14.04上安装2.6的内核

    1.到http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.32.tar.bz2这里下载最新的稳定版内核: 2.根据各自系统,安装如下软件:l b ...

  3. NSUserDefaults 简介,使用 NSUserDefaults 存储自定义对象

    摘要: NSUserDefaults适合存储轻量级的本地数据,一些简单的数据(NSString类型的)例如密码,网址等,NSUserDefaults肯定是首选,但是如果我们自定义了一个对象,对象保存的 ...

  4. php 5.3新增的闭包语法介绍function() use() {}

    * 下面提到的代码在PHP5.3以上版本运行通过. */function callback($callback) { $callback();}//输出: This is a anonymous fu ...

  5. 记SpannableString设多少span时注意事项

    public void setSpan(Object what, int start, int end, int flags) { } 这个方法里的第一个参数,也就是一些span的对象,不能重复使用. ...

  6. centos7 安装php7+mysql5.7+nginx+redis

    .1.先修改yum源  https://webtatic.com rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest- ...

  7. git本地提交到远程仓库命令

    创建好远程仓库,然后要从本地上传代码到远程仓库: 1.git init 初始化git本地仓库 2. git add 添加到暂存区 3. git commit -am "提交备注" ...

  8. Mac系统下配置Tomcat

    1.下载Tomcat,网址:http://tomcat.apache.org/download-70.cgi: 2.进入终端Terminal,打开配置文件.bash_profile,输入open .b ...

  9. 把数据输出到Word (组件形式)

    上一篇的文章中我们介绍了在不使用第三方组件的方式,多种数据输出出到 word的方式,最后我们也提到了不使用组件的弊端,就是复杂的word我们要提前设置模板.编码不易控制.循环输出数据更是难以控制.接下 ...

  10. python成长之路【第十七篇】:玩转jQuery

    一.jQuery简介 1.1.jQuery是什么 jQuery由美国人John Resig创建,至今已吸引了来自世界各地的众多 javascript高手加入其team. jQuery是继prototy ...