不知大家有没有注意到,接手的项目中存在多个重复的工具类,发现其中很多功能,Spring 自带的都有。于是整理了本文,希望能够帮助到大家!
断言是一个逻辑判断,用于检查不应该发生的情况
Assert 关键字在 JDK1.4 中引入,可通过 JVM 参数-enableassertions开启
SpringBoot 中提供了 Assert 断言工具类,通常用于数据合法性检查
1.ObjectUtils
获取对象的基本信息:
判断工具:
其他工具方法:
// 向参数数组的末尾追加新元素,并返回一个新数组 <A, O extends A> A[] addObjectToArray(A[] array, O obj) // 原生基础类型数组 --> 包装类数组 Object[] toObjectArray(Object source)
2.StringUtils
字符串判断工具:
字符串操作工具:
路径相关工具方法:
3.CollectionUtils
集合判断工具:
集合操作工具:
1.FileCopyUtils
输入:
// 从文件中读入到字节数组中 byte[] copyToByteArray(File in) // 从输入流中读入到字节数组中 byte[] copyToByteArray(InputStream in) // 从输入流中读入到字符串中 String copyToString(Reader in)
输出:
2.ResourceUtils
从资源路径获取文件:
// 判断字符串是否是一个合法的 URL 字符串。 static boolean isUrl(String resourceLocation) // 获取 URL static URL getURL(String resourceLocation) // 获取文件(在 JAR 包内无法正常使用,需要是一个独立的文件) static File getFile(String resourceLocation)
Resource:
3.StreamUtils
输入:
输出:
1.ReflectionUtils
获取方法:
执行方法:
// 执行方法 Object invokeMethod(Method method, Object target) // 同上,提供方法参数 Object invokeMethod(Method method, Object target, Object... args) // 取消 Java 权限检查。以便后续执行该私有方法 void makeAccessible(Method method) // 取消 Java 权限检查。以便后续执行私有构造方法 void makeAccessible(Constructor<?> ctor)
获取字段:
// 在类中查找指定属性 Field findField(Class<?> clazz, String name) // 同上,多提供了属性的类型 Field findField(Class<?> clazz, String name, Class<?> type) // 是否为一个 "public static final" 属性 boolean isPublicStaticFinal(Field field)
设置字段:
2.AopUtils
判断代理类型:
// 判断是不是 Spring 代理对象 boolean isAopProxy() // 判断是不是 jdk 动态代理对象 isJdkDynamicProxy() // 判断是不是 CGLIB 代理对象 boolean isCglibProxy()
获取被代理对象的 class:
// 获取被代理的目标 class Class<?> getTargetClass()
3.AopContext
获取当前对象的代理对象:
Object currentProxy()