SpringBoot内置工具类,告别瞎写工具类了( 三 )

输出:

查看代码 /*** 将给定的 {@link InputStream} 内容复制到新的 {@code byte[]} 中 , 完成后保持流的打开状态 。* @param in 作为数据来源的输入流(可能为 {@code null} 或 空)* @return 一个接收了数据的新字节数组 byte[] (可能为 空)*/byte[] copyToByteArray(InputStream in)/*** 将给定的 {@link InputStream} 内容复制到 {@link String} 中,完成后保持流的打开状态 。* @param in 作为数据来源的输入流(可能为 {@code null} 或 空)* @param charset {@link Charset}解码所需字符集* @return 一个接收了数据的字符串 String (可能为 空)*/String copyToString(InputStream in, Charset charset)/*** 清除给定流中的剩余内容,完成后保持流的打开状态 。* @param in 需要清空的输入流* @return 读取到多少字节*/int drain(InputStream in)
四、反射、AOP1.ReflectionUtils
获取方法:
查看代码 // 在类中查找指定方法Method findMethod(Class<?> clazz, String name)// 同上,额外提供方法参数类型作查找条件Method findMethod(Class<?> clazz, String name, Class<?>... paramTypes)// 获得类中所有方法,包括继承而来的Method[] getAllDeclaredMethods(Class<?> leafClass)// 在类中查找指定构造方法Constructor<T> accessibleConstructor(Class<T> clazz, Class<?>... parameterTypes)// 是否是 equals() 方法boolean isEqualsMethod(Method method)// 是否是 hashCode() 方法boolean isHashCodeMethod(Method method)// 是否是 toString() 方法boolean isToStringMethod(Method method)// 是否是从 Object 类继承而来的方法boolean isObjectMethod(Method method)// 检查一个方法是否声明抛出指定异常boolean declaresException(Method method, Class<?> exceptionType)
执行方法:
// 执行方法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)设置字段:
查看代码 // 获取 target 对象的 field 属性值Object getField(Field field, Object target)// 设置 target 对象的 field 属性值 , 值为 valuevoid setField(Field field, Object target, Object value)// 同类对象属性对等赋值void shallowCopyFieldState(Object src, Object dest)// 取消 Java 的权限控制检查 。以便后续读写该私有属性void makeAccessible(Field field)// 对类的每个属性执行 callbackvoid doWithFields(Class<?> clazz, ReflectionUtils.FieldCallback fc)// 同上,多了个属性过滤功能 。void doWithFields(Class<?> clazz, ReflectionUtils.FieldCallback fc,ReflectionUtils.FieldFilter ff)// 同上,但不包括继承而来的属性void doWithLocalFields(Class<?> clazz, ReflectionUtils.FieldCallback fc)
2.AopUtils
判断代理类型:
// 判断是不是 Spring 代理对象boolean isAopProxy()// 判断是不是 jdk 动态代理对象isJdkDynamicProxy()// 判断是不是 CGLIB 代理对象boolean isCglibProxy()获取被代理对象的 class:
// 获取被代理的目标 classClass<?> getTargetClass()3.AopContext
获取当前对象的代理对象:
Object currentProxy()【SpringBoot内置工具类,告别瞎写工具类了】

推荐阅读