java编程中的断言工具类(org.springframework.util.Assert)
转自:https://blog.csdn.net/gokeiryou263/article/details/19612471
断言工具类:Assert类,
java.lang.Object --->org.springframework.util.Assert
先举个例子,
当我们在编写类的方法时,常常需要对方法入参进行合法性检查,如果入参不符合要求,方法将通过抛出异常的方式拒绝后续处理。如下所示:
public InputStream getData(String file) {
if (file == null || file.length() == 0|| file.replaceAll("\\s", "").length() == 0) {
throw new IllegalArgumentException("file入参不是有效的文件地址");
}
…
}
类似以上检测方法入参的代码是非常常见,但是在每个方法中都使用手工编写检测逻辑的方式并不是一个好主意。阅读 Spring 源码,您会发现 Spring 采用一个 org.springframework.util.Assert 通用类完成这一任务。
Assert 翻译为中文为“断言”,使用过 JUnit 的读者都熟知这个概念,它断定某一个实际的运行值和预期想一样,否则就抛出异常。Spring 对方法入参的检测借用了这个概念,其提供的 Assert 类拥有众多按规则对方法入参进行断言的方法,可以满足大部分方法入参检测的要求。这些断言方法在入参不满足要求时就会抛出 IllegalArgumentException。下面,我们来认识一下 Assert 类中的常用断言方法:
断言方法 说明
notNull(Object object) 当 object 为 null 时抛出异常,notNull(Object object, String message) 方法允许您通过 message 定制异常信息。和 notNull() 方法断言规则相反的方法是 isNull(Object object)/isNull(Object object, String message),它要求入参一定是 null;
isTrue(boolean expression) / isTrue(boolean expression, String message) 当 expression 不为 true 抛出异常;
notEmpty(Collection collection) / notEmpty(Collection collection, String message) 当集合未包含元素时抛出异常。notEmpty(Map map) / notEmpty(Map map, String message) 和 notEmpty(Object[] array, String message) / notEmpty(Object[] array, String message) 分别对 Map 和 Object[] 类型的入参进行判断;
hasLength(String text) / hasLength(String text, String message) 当 text 为 null 或长度为 0 时抛出异常;
hasText(String text) / hasText(String text, String message) text 不能为 null 且必须至少包含一个非空格的字符,否则抛出异常;
isInstanceOf(Class clazz, Object obj) / isInstanceOf(Class type, Object obj, String message) 如果 obj 不能被正确造型为 clazz 指定的类将抛出异常;
isAssignable(Class superType, Class subType) / isAssignable(Class superType, Class subType, String message) subType 必须可以按类型匹配于 superType,否则将抛出异常;
使用 Assert 断言类可以简化方法入参检测的代码,如 InputStream getData(String file) 在应用 Assert 断言类后,其代码可以简化为以下的形式:
public InputStream getData(String file){
Assert.hasText(file,"file入参不是有效的文件地址");
① 使用 Spring 断言类进行方法入参检测
…
}
可见使用 Spring 的 Assert 替代自编码实现的入参检测逻辑后,方法的简洁性得到了不少的提高。Assert 不依赖于 Spring 容器,您可以大胆地在自己的应用中使用这个工具类。
方法摘要
static void doesNotContain(java.lang.String textToSearch, java.lang.String substring)
断言,给定的文本不包含给定的子串。
static void doesNotContain(java.lang.String textToSearch, java.lang.String substring, java.lang.String message)
断言,给定的文本不包含给定的子串。
static void hasLength(java.lang.String text)
断言,由于String是不是空的,也就是说,它不能null ,而不是空字符串。
static void hasLength(java.lang.String text, java.lang.String message)
断言,由于String是不是空的,也就是说,它不能null ,而不是空字符串。
static void hasText(java.lang.String text)
断言定String具有有效的文本内容,即它不能null ,并且必须至少包含一个非空格字符。
static void hasText(java.lang.String text, java.lang.String message)
断言定String具有有效的文本内容,即它不能null ,并且必须至少包含一个非空格字符。
static void isAssignable(java.lang.Class superType, java.lang.Class subType)
断言superType.isAssignableFrom(subType)是true 。
static void isAssignable(java.lang.Class superType, java.lang.Class subType, java.lang.String message)
断言superType.isAssignableFrom(subType)是true 。
static void isInstanceOf(java.lang.Class clazz, java.lang.Object obj)
断言提供的对象是所提供的类的实例。
static void isInstanceOf(java.lang.Class type, java.lang.Object obj, java.lang.String message)
断言提供的对象是所提供的类的实例。
static void isNull(java.lang.Object object)
断言一个对象是null 。
static void isNull(java.lang.Object object, java.lang.String message)
断言一个对象是null 。
static void isTrue(boolean expression)
断言一个布尔表达式,扔IllegalArgumentException如果测试结果是false 。
static void isTrue(boolean expression, java.lang.String message)
断言一个布尔表达式,扔IllegalArgumentException如果测试结果是false 。
static void noNullElements(java.lang.Object[] array)
断言一个数组没有null元素。
static void noNullElements(java.lang.Object[] array, java.lang.String message)
断言一个数组没有null元素。
static void notEmpty(java.util.Collection collection)
断言,一个集合有元素,也就是说,它不能null ,而且必须有至少一个元素。
static void notEmpty(java.util.Collection collection, java.lang.String message)
断言,一个集合有元素,也就是说,它不能null ,而且必须有至少一个元素。
static void notEmpty(java.util.Map map)
断言,一个地图的作品,也就是说,它不能null ,并且必须至少有一个条目。
static void notEmpty(java.util.Map map, java.lang.String message)
断言,一个地图的作品,也就是说,它不能null ,并且必须至少有一个条目。
static void notEmpty(java.lang.Object[] array)
断言一个数组元素,即它不能null ,而且必须有至少一个元素。
static void notEmpty(java.lang.Object[] array, java.lang.String message)
断言一个数组元素,即它不能null ,而且必须有至少一个元素。
static void notNull(java.lang.Object object)
断言一个对象不null 。
static void notNull(java.lang.Object object, java.lang.String message)
断言一个对象不null 。
static void state(boolean expression)
断言一个布尔表达式,扔IllegalStateException如果测试结果是false 。
static void state(boolean expression, java.lang.String message)
断言一个布尔表达式,扔IllegalStateException如果测试结果是false 。
从类 java.lang.Object 继承的方法
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
---------------------
作者:gokeiryou263
来源:CSDN
原文:https://blog.csdn.net/gokeiryou263/article/details/19612471
版权声明:本文为博主原创文章,转载请附上博文链接!
java编程中的断言工具类(org.springframework.util.Assert)的更多相关文章
- JAVA中封装JSONUtils工具类及使用
在JAVA中用json-lib-2.3-jdk15.jar包中提供了JSONObject和JSONArray基类,用于JSON的序列化和反序列化的操作.但是我们更习惯将其进一步封装,达到更好的重用. ...
- java 断言工具类
1.断言工具类 package com.sze.redis.util; import java.util.Collection; import java.util.Map; import com.sz ...
- Java 中的并发工具类
Java 中的并发工具类 CountDownLatch public class JoinCountDownLatchTest { public static void main(String[] a ...
- Java编程中“为了性能”尽量要做到的一些地方
最近的机器内存又爆满了,除了新增机器内存外,还应该好好review一下我们的代码,有很多代码编写过于随意化,这些不好的习惯或对程序语言的不了解是应该好好打压打压了. 下面是参考网络资源总结的一些在Ja ...
- java编程中'为了性能'一些尽量做到的地方
原文地址:http://blog.csdn.NET/m13666368773/article/details/7796924 最近的机器内存又爆满了,出了新增机器内存外,还应该好好review一下我们 ...
- 【Java基础】Java开发过程中的常用工具类库
目录 Java开发过程中的常用工具类库 1. Apache Commons类库 2. Guava类库 3. Spring中的常用工具类 4. 其他工具 参考 Java开发过程中的常用工具类库 1. A ...
- Java操作文件夹的工具类
Java操作文件夹的工具类 import java.io.File; public class DeleteDirectory { /** * 删除单个文件 * @param fileName 要删除 ...
- 深入剖析Java编程中的中文问题及建议最优解决方法
摘录自:http://fafeng.blogbus.com/logs/3062998.html http://www.blogbus.com/fafeng-logs/3063006.html 深入剖析 ...
- commons-lang3-3.2.jar中的常用工具类的使用
这个包中的很多工具类可以简化我们的操作,在这里简单的研究其中的几个工具类的使用. 1.StringUtils工具类 可以判断是否是空串,是否为null,默认值设置等操作: /** * StringUt ...
随机推荐
- java-得到字符串中出现次数最最多的字符,并打印出字符以及出现次数
最近面试总被面试到,整理出几种方式(有参考别人的部分) /** * java一个字符串中出现次数最多的字符以及次数 * @param args */ public static void main(S ...
- jQuery实现上传进度条效果
效果:(点击上传按钮) See the Pen pjGNJr by moyu (@MoYu1991) on CodePen. html代码: <!DOCTYPE html> <h ...
- 6.0以上,SYSTEM_ALERT_WINDOW 权限的问题
6.0以上会因为SYSTEM_ALERT_WINDOW权限的问题,无法在最上层显示. 用户打开软件设置页手动打开,才能授权.路径是:Settings->Apps->App Setting- ...
- jQuery_计算器实例
知识点: fadeIn()---计算器界面载入淡入效果 hover()---鼠标移入移出某个元素时触发的事件 click()---鼠标单击事件 css()---对元素样式的操作 val()---获取表 ...
- 数据结构-B+树
B+ 树是一种树数据结构,是一个n叉排序树,每个节点通常有多个孩子,一棵B+树包含根节点.内部节点和叶子节点.根节点可能是一个叶子节点,也可能是一个包含两个或两个以上孩子节点的节点. B+ 树通常用于 ...
- SPOJ - QTREE Query on a tree题解
题目大意: 一棵树,有边权,有两个操作:1.修改一条边的权值:2.询问两点间路径上的边的权值的最大值. 思路: 十分裸的树链剖分+线段树,无非是边权要放到深度大的一端的点上,但是有两个坑爹的地方,改了 ...
- bzoj4553 [Tjoi2016&Heoi2016]序列 树状数组(区间最大值)+cqd
[Tjoi2016&Heoi2016]序列 Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 1006 Solved: 464[Submit][ ...
- POJ 2240_Arbitrage
题意: 给定一系列货币汇率,求能否从一种货币,经过一系列转换,最终转化回更高价值的该种货币. 分析: 即为求最长路并判断是否存在"正"权值回路,这里用的bellmanford算法. ...
- 条款十五: 让operator=返回*this的引用
c++程序员经常犯的一个错误是让operator=返回void,这好象没什么不合理的,但它妨碍了连续(链式)赋值操作,所以不要这样做. 一般情况下几乎总要遵循operator=输入和返回的都是类对象的 ...
- Android 4.4环境搭建——配置AVD模拟器
AVD(Android Virtual Device)即Android模拟器,它是Android官方提供的一个能够执行Android程序的虚拟机,在执行Android程序之前,首先须要创建AVD模拟器 ...