Spring工具类的源码阅读(更新中~)
2012-12-10 17:05
525 查看
序:
这些工具类不仅仅只局限于spring框架的内部使用,完全可以作为独立的工具类在我们编写的项目中进行使用。好处便是代码质量提高,编写效率加快。今天在阅读spring源码时,发现Assert类的使用,于是便参考网络资源,在这里做一个记录。
工具类:
断言Assert类
包名-org.springframework.utilpublic abstract class Assert { public static void isTrue(boolean expression, String message) { if (!expression) { throw new IllegalArgumentException(message); } } /** * 1.根据某个表达式的boolean类型,进行断言。 */ public static void isTrue(boolean expression) { isTrue(expression, "[Assertion failed] - this expression must be true"); } public static void isNull(Object object, String message) { if (object != null) { throw new IllegalArgumentException(message); } } /** * 2.根据对象是否为空进行断言。不为空产生异常。 * @param object */ public static void isNull(Object object) { isNull(object, "[Assertion failed] - the object argument must be null"); } public static void notNull(Object object, String message) { if (object == null) { throw new IllegalArgumentException(message); } } /** * 3.根据对象是否为空进行断言。为空产生异常。 * @param object */ public static void notNull(Object object) { notNull(object, "[Assertion failed] - this argument is required; it must not be null"); } public static void hasLength(String text, String message) { if (!StringUtils.hasLength(text)) { throw new IllegalArgumentException(message); } } /** * 4.根据字符串内容是否为空/空值进行断言,为空或空值则产生异常 * @param text */ public static void hasLength(String text) { hasLength(text, "[Assertion failed] - this String argument must have length; it must not be null or empty"); } public static void hasText(String text, String message) { if (!StringUtils.hasText(text)) { throw new IllegalArgumentException(message); } } /** * 5.比4的断言更严格,要求字符串内容不能为空格字符串所组成的。否则产生异常 * @param text */ public static void hasText(String text) { hasText(text, "[Assertion failed] - this String argument must have text; it must not be null, empty, or blank"); } public static void doesNotContain(String textToSearch, String substring, String message) { if (StringUtils.hasLength(textToSearch) && StringUtils.hasLength(substring) && textToSearch.indexOf(substring) != -1) { throw new IllegalArgumentException(message); } } /** * 6.根据字符串是否包含子字符串进行断言,不包含则产生异常。 * @param textToSearch * @param substring */ public static void doesNotContain(String textToSearch, String substring) { doesNotContain(textToSearch, substring, "[Assertion failed] - this String argument must not contain the substring [" + substring + "]"); } public static void notEmpty(Object[] array, String message) { if (ObjectUtils.isEmpty(array)) { throw new IllegalArgumentException(message); } } /** * * * 7.根据数组是否为空或者数组长度为0进行断言,满足前者之一则发生异常。 */ public static void notEmpty(Object[] array) { notEmpty(array, "[Assertion failed] - this array must not be empty: it must contain at least 1 element"); } public static void noNullElements(Object[] array, String message) { if (array != null) { for (int i = 0; i < array.length; i++) { if (array[i] == null) { throw new IllegalArgumentException(message); } } } } /** * 8.根据数组是否包含null对象进行断言,满足则发生异常 * @param array */ public static void noNullElements(Object[] array) { noNullElements(array, "[Assertion failed] - this array must not contain any null elements"); } public static void notEmpty(Collection collection, String message) { if (CollectionUtils.isEmpty(collection)) { throw new IllegalArgumentException(message); } } /** * 9.对集合类型是否为空或者元素为0进行断言,满足则发生异常 * @param collection */ public static void notEmpty(Collection collection) { notEmpty(collection, "[Assertion failed] - this collection must not be empty: it must contain at least 1 element"); } public static void notEmpty(Map map, String message) { if (CollectionUtils.isEmpty(map)) { throw new IllegalArgumentException(message); } } /** * 10.对Map类型是否为空或者元素为0进行断言,满足则发生异常 * @param map */ public static void notEmpty(Map map) { notEmpty(map, "[Assertion failed] - this map must not be empty; it must contain at least one entry"); } public static void isInstanceOf(Class clazz, Object obj) { isInstanceOf(clazz, obj, ""); } /** * *11.根据类型是否所属于指定类型进行断言,不是则发生异常 */ public static void isInstanceOf(Class type, Object obj, String message) { notNull(type, "Type to check against must not be null"); if (!type.isInstance(obj)) { throw new IllegalArgumentException(message + "Object of class [" + (obj != null ? obj.getClass().getName() : "null") + "] must be an instance of " + type); } } /** * 12.subType必须可以按类型匹配于 superType,否则将抛出异常; */ public static void isAssignable(Class superType, Class subType) { isAssignable(superType, subType, ""); } public static void isAssignable(Class superType, Class subType, String message) { notNull(superType, "Type to check against must not be null"); if (subType == null || !superType.isAssignableFrom(subType)) { throw new IllegalArgumentException(message + subType + " is not assignable to " + superType); } } public static void state(boolean expression, String message) { if (!expression) { throw new IllegalStateException(message); } } /** * 13.根据某个表达式的boolean类型,进行断言。类似1 * @param expression */ public static void state(boolean expression) { state(expression, "[Assertion failed] - this state invariant must be true"); } }
字符串StringUtil类
转载:/article/7966992.html相关文章推荐
- Request源码阅读(持续更新中)
- Spring源码阅读 之加载XML配置文件
- Spring源码阅读之DefaultListableBeanFactory系列-SimpleAliasRegistry
- Spring源码阅读(二)
- spring源码系列(一)sring源码编译 spring源码下载 spring源码阅读
- spring源码解析-如何阅读源码
- Spring源码阅读-开闭原则
- spring 源码阅读学习
- Spring 源码阅读笔记(一)
- Spring源码阅读(一):IOC容器的初始化
- Spring源码阅读-- IOC容器资源定位
- 阅读spring 源码
- Bean实例化(Spring源码阅读)-我们到底能走多远系列(33)
- Spring 源码阅读(二)——Spring的初始化以及资源加载
- spring-mvc源码阅读(三)RequestMappingHandlerMapping
- Spring源码阅读——简单模拟Spring的控制反转IOC和依赖注入(Bean的加载和获取)
- Spring源码阅读一——IOC
- Spring源码解析——如何阅读源码
- Spring学习1:Spring源码阅读环境搭建
- Spring源码解析——如何阅读源码