[Guava官方文档翻译] 3. 前置条件检查(Preconditions Explained)
本文地址:http://www.cnblogs.com/hamhog/p/3536964.html
前置条件检查
Guava提供了一些检查前置条件的utilities。我们强烈建议静态import这些utilities。(如何在Eclipse中轻松做到。)
这些方法的参数列表有3种变形:
- 不附额外的参数。抛出exception时没有错误信息。
- 额外附一个 Object 类型的参数。抛出exception时,错误信息为 object.toString 。
- 额外附一个 String 类型的参数,以及若干个 Object 类型的参数。作用类似printf,但是为了兼容GWT以及性能考虑,只允许 %s 标识符。例如:
checkArgument(i >=0,"Argument was %s but expected nonnegative", i);
checkArgument(i < j,"Expected i < j, but %s > %s", i, j);
基本形式 (不包含额外参数) | 描述 | 失败时抛出的exception |
checkArgument(boolean) | 检查参数 boolean 是否为 true 。 用来验证方法的参数是否有效。 | IllegalArgumentException |
checkNotNull(T) | 检查参数值是否为非null。直接返回这个值,因此你可以内联地使用 checkNotNull(value) 。 | NullPointerException |
checkState(boolean) | 检查object的某些状态,不依赖方法的参数。例如: Iterator 在调用 remove 前可以用这个方法检查 next 是否被调用过。 | IllegalStateException |
checkElementIndex(int index, int size) | 检查参数 index 是否是给定size的list或string、array等的合法index。一个合法index必须>=0且<size。不用把list、string或array直接传参进来;只要传它的size即可。返回 index 。 | IndexOutOfBoundsException |
checkPositionIndex(int index, int size) | 检查参数 index 是否是给定size的list或string、array等的合法position。一个合法position必须>=0且<=size。不用把list、string或array直接传参进来;只要传它的size即可。返回 index 。 | IndexOutOfBoundsException |
checkPositionIndexes(int start, int end, int size) | 检查参数构成的 [start, end) 是给定size的list或string、array等得合法子集。抛出exception时带有自己的错误信息。 | IndexOutOfBoundsException |
相比一些其他组件,如Apache Commons中的comparable utilities,我们更倾向于用我们自己的前置条件检查,主要有以下原因。Piotr Jagielski 简短阐述了他为什么选择我们的utilities:
- 使用静态import之后,Guava的方法是清晰而无歧义的。checkNotNull 清楚地表示了它是做什么的,以及可能抛出哪个exception。
- checkNotNull 在验证后把参数直接返回,因此在构造函数中可以简单地写为一行: this.field = checkNotNull(field) 。
- 简单地,可加参数的"printf风格" exception信息。 (这个优势也是我们建议继续使用 checkNotNull ,而不换用JDK 7中的Objects.requireNonNull 的原因。)
我们建议把每项前置条件检查代码写在不同的行中,这样在debug的时候你就能看出是哪一项没通过了。另外,你应该附上有意义的错误信息,因此每个检查独立一行会方便一些。
中文翻译自Guava官方文档:GuavaExplained - PreconditionsExplained 译者:戴仓薯
[Guava官方文档翻译] 3. 前置条件检查(Preconditions Explained)的更多相关文章
- [Guava官方文档翻译] 7. Guava的Immutable Collection(不可变集合)工具 (Immutable Collections Explained)
我的技术博客经常被流氓网站恶意爬取转载.请移步原文:http://www.cnblogs.com/hamhog/p/3538666.html ,享受整齐的排版.有效的链接.正确的代码缩进.更好的阅读体 ...
- [Guava官方文档翻译] 6. 用Guava辅助Throwable异常处理 (Throwables Explained)
我的技术博客经常被流氓网站恶意爬取转载.请移步原文:http://www.cnblogs.com/hamhog/p/3537508.html ,享受整齐的排版.有效的链接.正确的代码缩进.更好的阅读体 ...
- [Guava官方文档翻译] 5. Guava的Object公共方法 (Common Object Utilities Explained)
我的技术博客经常被流氓网站恶意爬取转载.请移步原文:http://www.cnblogs.com/hamhog/p/3537367.html,享受整齐的排版.有效的链接.正确的代码缩进.更好的阅读体验 ...
- [Guava官方文档翻译] 4. 使用Guava Ordering排序 (Ordering Explained)
本文地址:http://www.cnblogs.com/hamhog/p/3537233.html 示例 assertTrue(byLengthOrdering.reverse().isOrdered ...
- [Guava官方文档翻译] 2.使用和避免使用null (Using And Avoiding Null Explained)
本文地址:http://www.cnblogs.com/hamhog/p/3536647.html "null很恶心." -Doug Lea "这是一个令我追悔莫及的错误 ...
- [Guava官方文档翻译] 1.Guava简介 (Introduction)
用户指南 Guava包含Google在Java项目中用到的一些核心库:collections, caching, primitives support, concurrency 库, common a ...
- Google Guava官方教程(中文版)
Google Guava官方教程(中文版) 原文链接 译文链接 译者: 沈义扬,罗立树,何一昕,武祖 校对:方腾飞 引言 Guava工程包含了若干被Google的 Java项目广泛依赖 的核心库, ...
- Spring官方文档翻译(1~6章)
Spring官方文档翻译(1~6章) 转载至 http://blog.csdn.net/tangtong1/article/details/51326887 Spring官方文档.参考中文文档 一.S ...
- Flume官方文档翻译——Flume 1.7.0 User Guide (unreleased version)(二)
Flume官方文档翻译--Flume 1.7.0 User Guide (unreleased version)(一) Logging raw data(记录原始数据) Logging the raw ...
随机推荐
- ECshop数据库的访问统计和管理员日志的清空
ECshop是个不错的系统,但是它有一定漏洞,若是访问量巨大的话,大量的访问统计代码会存入数据库的ecs_stats表中,甚至几天就可以达到几百兆,严重的网站直接就崩溃了.数据备份的时候也有很多不便, ...
- IDF实验室-简单编程-字符统计 writeup
题目地址:http://ctf.idf.cn/index.php?g=game&m=article&a=index&id=37 网站:http://ctf.idf.cn/gam ...
- tomcat 6.0 压缩功能
官方文档: http://tomcat.apache.org/tomcat-6.0-doc/config/http.html
- cocos2d-x与ios内存管理分析(在游戏中减少内存压力)
转自:http://www.cocos2dev.com/?p=281 注:自己以前也写过cocos2d-x如何优化内存的使用,以及内存不足的情况下怎么处理游戏.今天在微博中看到有朋友介绍了下内存,挺详 ...
- 使MySQL 支持繁体字
要 MySQL 支持繁体字,可以将相关编码设置为 UTF8 (也叫 UTF-8).编码的设置从浏览器到表字段,一个都不能少: 浏览器设置 HTML设置 服务器 Request 对象设置 数据库连接设置 ...
- 全面解析java注解
一.注解概述 1.学习注解能够读懂别人的代码,特别是框架相关的代码 2.让自己的编程更加简洁,代码更加清晰 3.让别人高看一眼,会使用自定义注解来解决问题 ...
- HDU 1068 Girls and Boys(最大独立集合 = 顶点数 - 最大匹配数)
HDU 1068 :题目链接 题意:一些男孩和女孩,给出一些人物关系,然后问能找到最多有多少个人都互不认识. 转换一下:就是大家都不认识的人,即最大独立集合 #include <iostream ...
- 两个字符串,若为数字则都相加,若有一个不为数字则,输出error
import java.util.*; /*请设计一个算法能够完成两个用字符串存储的整数进行相加操作,对非法输入则返回“error”: * 用例:123 234 * 输出:357 * 用例123 as ...
- C# 重新改变数组的长度
重新改变数组的长度 System.Array.Resize(ref FieldName, j);
- [转]使用Oracle SQL Developer连接数据库并创建用户
本文转自:http://blog.csdn.net/xw13106209/article/details/6594738 1.使用sys账户创建数据库连接 安装Oracle 11g会自带一个叫做SQL ...