类 ReflectUtils

java.lang.Object
com.alibaba.ageiport.common.utils.ReflectUtils

public class ReflectUtils extends Object
反射工具类
作者:
xuechao.sxc
  • 构造器详细资料

    • ReflectUtils

      public ReflectUtils()
  • 方法详细资料

    • isPrimitives

      public static boolean isPrimitives(Class<?> cls)
    • isPrimitive

      public static boolean isPrimitive(Class<?> cls)
    • getConstructor

      public static <T> Constructor<T> getConstructor(Class<T> clazz, Class<?>... parameterTypes)
      查找类中的指定参数的构造方法,如果找到构造方法,会自动设置可访问为true
      类型参数:
      T - 对象类型
      参数:
      clazz - 类
      parameterTypes - 参数类型,只要任何一个参数是指定参数的父类或接口或相等即可,此参数可以不传
      返回:
      构造方法,如果未找到返回null
    • getConstructors

      public static <T> Constructor<T>[] getConstructors(Class<T> beanClass) throws SecurityException
      获得一个类中所有构造列表
      类型参数:
      T - 构造的对象类型
      参数:
      beanClass - 类
      返回:
      字段列表
      抛出:
      SecurityException - 安全检查异常
    • getConstructorsDirectly

      public static Constructor<?>[] getConstructorsDirectly(Class<?> beanClass) throws SecurityException
      获得一个类中所有字段列表,直接反射获取,无缓存
      参数:
      beanClass - 类
      返回:
      字段列表
      抛出:
      SecurityException - 安全检查异常
    • setFieldValue

      public static void setFieldValue(Object obj, Field field, Object value) throws UtilException
      设置字段值
      参数:
      obj - 对象,如果是static字段,此参数为null
      field - 字段
      value - 值,值类型必须与字段类型匹配,不会自动转换对象类型
      抛出:
      UtilException - UtilException 包装IllegalAccessException异常
    • getPublicMethodNames

      public static Set<String> getPublicMethodNames(Class<?> clazz)
      获得指定类本类及其父类中的Public方法名
      去重重载的方法
      参数:
      clazz - 类
      返回:
      方法名Set
    • getPublicMethods

      public static Method[] getPublicMethods(Class<?> clazz)
      获得本类及其父类所有Public方法
      参数:
      clazz - 查找方法的类
      返回:
      过滤后的方法列表
    • getPublicMethods

      public static List<Method> getPublicMethods(Class<?> clazz, Filter<Method> filter)
      获得指定类过滤后的Public方法列表
      参数:
      clazz - 查找方法的类
      filter - 过滤器
      返回:
      过滤后的方法列表
    • getPublicMethods

      public static List<Method> getPublicMethods(Class<?> clazz, Method... excludeMethods)
      获得指定类过滤后的Public方法列表
      参数:
      clazz - 查找方法的类
      excludeMethods - 不包括的方法
      返回:
      过滤后的方法列表
    • getPublicMethods

      public static List<Method> getPublicMethods(Class<?> clazz, String... excludeMethodNames)
      获得指定类过滤后的Public方法列表
      参数:
      clazz - 查找方法的类
      excludeMethodNames - 不包括的方法名列表
      返回:
      过滤后的方法列表
    • getPublicMethod

      public static Method getPublicMethod(Class<?> clazz, String methodName, Class<?>... paramTypes) throws SecurityException
      查找指定Public方法 如果找不到对应的方法或方法不为public的则返回null
      参数:
      clazz - 类
      methodName - 方法名
      paramTypes - 参数类型
      返回:
      方法
      抛出:
      SecurityException - 无权访问抛出异常
    • getMethodOfObj

      public static Method getMethodOfObj(Object obj, String methodName, Object... args) throws SecurityException
      查找指定对象中的所有方法(包括非public方法),也包括父对象和Object类的方法

      此方法为精准获取方法名,即方法名和参数数量和类型必须一致,否则返回null

      参数:
      obj - 被查找的对象,如果为null返回null
      methodName - 方法名,如果为空字符串返回null
      args - 参数
      返回:
      方法
      抛出:
      SecurityException - 无访问权限抛出异常
    • getMethodIgnoreCase

      public static Method getMethodIgnoreCase(Class<?> clazz, String methodName, Class<?>... paramTypes) throws SecurityException
      忽略大小写查找指定方法,如果找不到对应的方法则返回null

      此方法为精准获取方法名,即方法名和参数数量和类型必须一致,否则返回null

      参数:
      clazz - 类,如果为null返回null
      methodName - 方法名,如果为空字符串返回null
      paramTypes - 参数类型,指定参数类型如果是方法的子类也算
      返回:
      方法
      抛出:
      SecurityException - 无权访问抛出异常
    • getMethod

      public static Method getMethod(Class<?> clazz, String methodName, Class<?>... paramTypes) throws SecurityException
      查找指定方法 如果找不到对应的方法则返回null

      此方法为精准获取方法名,即方法名和参数数量和类型必须一致,否则返回null

      参数:
      clazz - 类,如果为null返回null
      methodName - 方法名,如果为空字符串返回null
      paramTypes - 参数类型,指定参数类型如果是方法的子类也算
      返回:
      方法
      抛出:
      SecurityException - 无权访问抛出异常
    • getMethod

      public static Method getMethod(Class<?> clazz, boolean ignoreCase, String methodName, Class<?>... paramTypes) throws SecurityException
      查找指定方法 如果找不到对应的方法则返回null

      此方法为精准获取方法名,即方法名和参数数量和类型必须一致,否则返回null

      参数:
      clazz - 类,如果为null返回null
      ignoreCase - 是否忽略大小写
      methodName - 方法名,如果为空字符串返回null
      paramTypes - 参数类型,指定参数类型如果是方法的子类也算
      返回:
      方法
      抛出:
      SecurityException - 无权访问抛出异常
    • getMethodNames

      public static Set<String> getMethodNames(Class<?> clazz) throws SecurityException
      获得指定类中的Public方法名
      去重重载的方法
      参数:
      clazz - 类
      返回:
      方法名Set
      抛出:
      SecurityException - 安全异常
    • getMethods

      public static Method[] getMethods(Class<?> clazz, Filter<Method> filter) throws SecurityException
      获得指定类过滤后的Public方法列表
      参数:
      clazz - 查找方法的类
      filter - 过滤器
      返回:
      过滤后的方法列表
      抛出:
      SecurityException - 安全异常
    • getMethods

      public static Method[] getMethods(Class<?> beanClass) throws SecurityException
      获得一个类中所有方法列表,包括其父类中的方法
      参数:
      beanClass - 类
      返回:
      方法列表
      抛出:
      SecurityException - 安全检查异常
    • getMethodsDirectly

      public static Method[] getMethodsDirectly(Class<?> beanClass, boolean withSuperClassMethods) throws SecurityException
      获得一个类中所有方法列表,直接反射获取,无缓存
      参数:
      beanClass - 类
      withSuperClassMethods - 是否包括父类的方法列表
      返回:
      方法列表
      抛出:
      SecurityException - 安全检查异常
    • newInstance

      public static <T> T newInstance(String clazz) throws UtilException
      实例化对象
      类型参数:
      T - 对象类型
      参数:
      clazz - 类名
      返回:
      对象
      抛出:
      UtilException - 包装各类异常
    • newInstance

      public static <T> T newInstance(Class<T> clazz, Object... params) throws UtilException
      实例化对象
      类型参数:
      T - 对象类型
      参数:
      clazz - 类
      params - 构造函数参数
      返回:
      对象
      抛出:
      UtilException - 包装各类异常
    • newInstanceIfPossible

      public static <T> T newInstanceIfPossible(Class<T> beanClass)
      尝试遍历并调用此类的所有构造方法,直到构造成功并返回
      类型参数:
      T - 对象类型
      参数:
      beanClass - 被构造的类
      返回:
      构造后的对象
    • setAccessible

      public static <T extends AccessibleObject> T setAccessible(T accessibleObject)
      设置方法为可访问(私有方法可以被外部调用)
      类型参数:
      T - AccessibleObject的子类,比如Class、Method、Field等
      参数:
      accessibleObject - 可设置访问权限的对象,比如Class、Method、Field等
      返回:
      被设置可访问的对象