guava学习之——使用Preconditions类进行参数检查。
2015-03-28 13:38
375 查看
参数检查是一个项目中必须要考虑到的。参数检查前端要做,后端更要做。这决定了一个项目的健壮性和安全性。
guava的Preconditions类可以简单,优雅的帮助我们实现参数检查。
Preconditions类主要提供以下几种方法:
1 .checkArgument(boolean) :
用来检查boolean是否为真。 用作方法中检查参数
失败时抛出的异常类型: IllegalArgumentException
2.checkNotNull(T):
用来检查value不为null, 直接返回value;
失败时抛出的异常类型:NullPointerException
3.checkState(boolean):
用来检查对象的一些状态,不依赖方法参数。 例如, Iterator可以用来next是否在remove之前被调用。
失败时抛出的异常类型:IllegalStateException
4.checkElementIndex(int index, int size):
用来检查index是否为在一个长度为size的list, string或array合法的范围。 index的范围区间是[0, size)(包含0不包含size)。无需直接传入list, string或array, 只需传入大小。返回index。
失败时抛出的异常类型:IndexOutOfBoundsException
5.checkPositionIndex(int index, int size):
用来检查位置index是否为在一个长度为size的list, string或array合法的范围。 index的范围区间是[0, size)(包含0不包含size)。无需直接传入list, string或array, 只需传入大小。返回index。
失败时抛出的异常类型:IndexOutOfBoundsException
6.checkPositionIndexes(int start, int end, int size):
用来检查[start, end)是一个长度为size的list, string或array合法的范围子集。伴随着错误信息。
失败时抛出的异常类型:IndexOutOfBoundsException
下面是一些小例子:
比如我们开发java web程序时,需要校验客户端传来的参数。
1.检查前端传来的电话号码,要求不能为空,并且正则匹配。
Preconditions.checkArgument(phoneNum!=null && !"".equals(phoneNum.trim()) &&phoneNum.matches("^(13[0-9]|15[0-9]|17[678]|18[0-9]|14[57])[0-9]{8}$"),
"请输入正确的电话号码");
2.对方法的参数进行判断,如若不进行判断,就会引发很多问题。
public void f(Entry entry) {
Preconditions.checkNotNull(entry);// 参数校验
log.info(entry.getName()); // 如果不进行参数的检查,当entry为空时,程序就会出现问题。
}
guava的Preconditions类可以简单,优雅的帮助我们实现参数检查。
Preconditions类主要提供以下几种方法:
1 .checkArgument(boolean) :
用来检查boolean是否为真。 用作方法中检查参数
失败时抛出的异常类型: IllegalArgumentException
2.checkNotNull(T):
用来检查value不为null, 直接返回value;
失败时抛出的异常类型:NullPointerException
3.checkState(boolean):
用来检查对象的一些状态,不依赖方法参数。 例如, Iterator可以用来next是否在remove之前被调用。
失败时抛出的异常类型:IllegalStateException
4.checkElementIndex(int index, int size):
用来检查index是否为在一个长度为size的list, string或array合法的范围。 index的范围区间是[0, size)(包含0不包含size)。无需直接传入list, string或array, 只需传入大小。返回index。
失败时抛出的异常类型:IndexOutOfBoundsException
5.checkPositionIndex(int index, int size):
用来检查位置index是否为在一个长度为size的list, string或array合法的范围。 index的范围区间是[0, size)(包含0不包含size)。无需直接传入list, string或array, 只需传入大小。返回index。
失败时抛出的异常类型:IndexOutOfBoundsException
6.checkPositionIndexes(int start, int end, int size):
用来检查[start, end)是一个长度为size的list, string或array合法的范围子集。伴随着错误信息。
失败时抛出的异常类型:IndexOutOfBoundsException
下面是一些小例子:
比如我们开发java web程序时,需要校验客户端传来的参数。
1.检查前端传来的电话号码,要求不能为空,并且正则匹配。
Preconditions.checkArgument(phoneNum!=null && !"".equals(phoneNum.trim()) &&phoneNum.matches("^(13[0-9]|15[0-9]|17[678]|18[0-9]|14[57])[0-9]{8}$"),
"请输入正确的电话号码");
2.对方法的参数进行判断,如若不进行判断,就会引发很多问题。
public void f(Entry entry) {
Preconditions.checkNotNull(entry);// 参数校验
log.info(entry.getName()); // 如果不进行参数的检查,当entry为空时,程序就会出现问题。
}
相关文章推荐
- Guava库学习:学习使用Preconditions工具类进行代码的校验
- SpringMVC学习笔记五:使用converter进行参数数据转换
- 系列 《使用sklearn进行集成学习——理论》 《使用sklearn进行集成学习——实践》 目录 1 Random Forest和Gradient Tree Boosting参数详解 2 如何调参?
- Guava库学习:学习使用Preconditions工具类进行代码的校验
- 详解使用Spring AOP和自定义注解进行参数检查
- Guava使用之Throwables异常简化、错误传播和检查
- 使用TensorFlow,GPU和Docker容器进行深度学习
- VScode保存时使用ESlint进行代码检查
- 使用TensorFlow,GPU和Docker容器进行深度学习
- vue学习五 router-link传参以及参数的使用
- 使用深度学习TensorFlow框架进行图片识别
- 使用sklearn进行增量学习
- Android音视频学习第7章:使用OpenSL ES进行音频解码
- Colaboratory:手把手教你使用Google免费的云端IDE进行深度学习(免费的GPU加速)的详细攻略——Jason niu
- 使用GPU Docker:Nvidia-Docker进行人工智能学习 之Ubuntu安装
- 机器学习逻辑回归:使用C++语言手工编写程序对a1a数据集进行Logistic分类
- 如何利用深度学习写诗歌(使用Python进行文本生成)
- 如何利用深度学习写诗歌(使用Python进行文本生成)
- MySQL存储过程学习整理,游标使用,参数输入输出
- 使用SpringMVC时配合福建快三开奖网平台架设hibernate-validate进行参数的合法性校验,能节省一定的代码量.