guava学习--Preconditions
转载: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的更多相关文章
- Guava学习笔记(2):Preconditions优雅的检验参数
转自:http://www.cnblogs.com/peida/p/Guava_Preconditions.html 在日常开发中,我们经常会对方法的输入参数做一些数据格式上的验证,以便保证方法能够按 ...
- Guava学习笔记:Preconditions优雅的检验参数
在日常开发中,我们经常会对方法的输入参数做一些数据格式上的验证,以便保证方法能够按照正常流程执行下去.对于可预知的一些数据上的错误,我们一定要做事前检测和判断,来避免程序流程出错,而不是完全通过错误处 ...
- Guava学习笔记:Preconditions优雅的检验参数(java)
http://www.cnblogs.com/peida/p/guava_preconditions.html 在日常开发中,我们经常会对方法的输入参数做一些数据格式上的验证,以便保证方法能够按照正常 ...
- Guava学习笔记目录
Guava 是一个 Google 的基于java1.6的类库集合的扩展项目,包括 collections, caching, primitives support, concurrency libra ...
- guava 学习笔记 使用瓜娃(guava)的选择和预判断使代码变得简洁
guava 学习笔记 使用瓜娃(guava)的选择和预判断使代码变得简洁 1,本文翻译自 http://eclipsesource.com/blogs/2012/06/06/cleaner-code- ...
- Guava学习
Guava学习笔记目录 Guava 是一个 Google 的基于java1.6的类库集合的扩展项目,包括 collections, caching, primitives support, concu ...
- [置顶] Guava学习之Lists
Lists类主要提供了对List类的子类构造以及操作的静态方法.在Lists类中支持构造ArrayList.LinkedList以及newCopyOnWriteArrayList对象的方法.其中提供了 ...
- guava 学习笔记(二) 瓜娃(guava)的API快速熟悉使用
guava 学习笔记(二) 瓜娃(guava)的API快速熟悉使用 1,大纲 让我们来熟悉瓜娃,并体验下它的一些API,分成如下几个部分: Introduction Guava Collection ...
- [置顶] Guava学习之ArrayListMultimap
ArrayListMultimap类的继承关系如下图所示: Guava ArrayListMultimap List Multimap 是一个接口,继承自 Multimap 接口.ListMultim ...
随机推荐
- eclipse左侧不见
我的解决办法: eclipse---> Window --->Perspective--> Open Perspective-->Java
- 大白的webservice
1.什么是web服务: web服务是一种可以用来解决跨网络应用集成问题的开发模式,这种模式为实现"软件即服务"提供了技术保障. 2.web服务的三个核心 (SOAP,WSDL,UD ...
- iis发布后,未能找到编译器可执行文件 csc.exe
iis 未能找到编译器可执行文件 csc.exe在一台新安装完的Windows Server 2003上,打上Framework 3.5,配置好WebService的IIS,结果浏览时出现:未找到编译 ...
- Bootstrap 3 Datepicker 使用过程
最近在创建记录的时候,需要用到日历的功能.本身是使用的bootstrap布局的,所以就找到Datepicker,看了一下用起来还是挺方便的.下面就是使用过程. 依赖的资源 jQuery Moment. ...
- VS2013 带命令行参数的调试问题 解决方案
int main(int argc,char* argv[]) argc是命令行总的参数个数,argv[]是argc个参数,其中第0个参数是程序的全名,以后的参数命令行后面跟的用户输入的参数 比如: ...
- 【leetcode❤python】 155. Min Stack
#-*- coding: UTF-8 -*- class MinStack(object): def __init__(self): """ ...
- Java资源大全中文版(Awesome最新版)(转载)
原文地址:http://www.cnblogs.com/best/p/5876559.html 目录 业务流程管理套件 字节码操作 集群管理 代码分析 编译器生成工具 构建工具 外部配置工具 约束满足 ...
- 漂亮的Linux命令提示符
漂亮的Linux命令提示符 每天面对着白底黑字(黑底白字)的命令行是否枯燥泛味呢?生活应给是五彩缤纷的,何不为单调无味的生活增添一抹色彩? 下面一起体验一下Linux命令行提示符惊险的整容之旅 惊鸿一 ...
- 学习UFT11.5历程(三)
已经用UFT11.5完成了几个大流程的录制和脚本调测. 现整理下这段过程中脚本中应该记住的点(QTP是VB脚本): 1. 循环和条件部分_reporter结果展示 For i = 1 To brow ...
- 标准W3C盒子模型和IE盒子模型CSS布局经典盒子模型(转)
盒子模型是css中一个重要的概念,理解了盒子模型才能更好的排版.其实盒子模型有两种,分别是 ie 盒子模型和标准 w3c 盒子模型.他们对盒子模型的解释各不相同,先来看看我们熟知的标准盒子模型: 从上 ...