Class ReflectionUtil

java.lang.Object
com.ultikits.ultitools.utils.ReflectionUtil

public final class ReflectionUtil extends Object
反射工具类

替代 hutool ReflectUtil / AnnotationUtil

Since:
6.2.0
Author:
wisdomme
  • Constructor Details

    • ReflectionUtil

      private ReflectionUtil()
  • Method Details

    • getAllFields

      public static List<Field> getAllFields(Class<?> clazz)
      获取类的所有字段(包括父类)
      Parameters:
      clazz - 类
      Returns:
      字段列表
    • getFields

      public static Field[] getFields(Class<?> clazz)
      获取类的所有字段(包括父类)
      Parameters:
      clazz - 类
      Returns:
      字段数组
    • getFieldValue

      public static Object getFieldValue(Object obj, Field field)
      获取字段值
      Parameters:
      obj - 对象
      field - 字段
      Returns:
      字段值
    • getFieldValue

      public static Object getFieldValue(Object obj, String fieldName)
      获取字段值
      Parameters:
      obj - 对象
      fieldName - 字段名
      Returns:
      字段值
    • setFieldValue

      public static void setFieldValue(Object obj, Field field, Object value)
      设置字段值
      Parameters:
      obj - 对象
      field - 字段
      value - 值
    • setFieldValue

      public static void setFieldValue(Object obj, String fieldName, Object value)
      设置字段值
      Parameters:
      obj - 对象
      fieldName - 字段名
      value - 值
    • getField

      public static Field getField(Class<?> clazz, String fieldName)
      获取指定字段
      Parameters:
      clazz - 类
      fieldName - 字段名
      Returns:
      字段,找不到返回 null
    • newInstance

      public static <T> T newInstance(Class<T> clazz)
      创建实例(使用无参构造器)
      Type Parameters:
      T - 类型
      Parameters:
      clazz - 类
      Returns:
      实例
    • newInstance

      public static <T> T newInstance(Class<T> clazz, Object... params)
      创建实例(使用带参数的构造器)
      Type Parameters:
      T - 类型
      Parameters:
      clazz - 类
      params - 构造器参数
      Returns:
      实例
    • isAssignable

      private static boolean isAssignable(Class<?> target, Class<?> source)
      判断类型是否可赋值
    • getPrimitiveWrapper

      private static Class<?> getPrimitiveWrapper(Class<?> primitive)
      获取基本类型对应的包装类
    • newInstanceIfPossible

      public static <T> T newInstanceIfPossible(Class<T> clazz)
      创建实例(使用无参构造器,支持私有构造器)
      Type Parameters:
      T - 类型
      Parameters:
      clazz - 类
      Returns:
      实例
    • getAnnotation

      public static <A extends Annotation> A getAnnotation(Class<?> clazz, Class<A> annotationClass)
      获取类上的注解
      Type Parameters:
      A - 注解类型
      Parameters:
      clazz - 类
      annotationClass - 注解类型
      Returns:
      注解实例,不存在返回 null
    • getAnnotation

      public static <A extends Annotation> A getAnnotation(Field field, Class<A> annotationClass)
      获取字段上的注解
      Type Parameters:
      A - 注解类型
      Parameters:
      field - 字段
      annotationClass - 注解类型
      Returns:
      注解实例,不存在返回 null
    • hasAnnotation

      public static boolean hasAnnotation(Class<?> clazz, Class<? extends Annotation> annotationClass)
      判断类是否有指定注解
      Parameters:
      clazz - 类
      annotationClass - 注解类型
      Returns:
      是否有注解
    • hasAnnotation

      public static boolean hasAnnotation(Field field, Class<? extends Annotation> annotationClass)
      判断字段是否有指定注解
      Parameters:
      field - 字段
      annotationClass - 注解类型
      Returns:
      是否有注解
    • invoke

      public static <T> T invoke(Object obj, Method method, Object... args)
      调用方法
      Type Parameters:
      T - 返回类型
      Parameters:
      obj - 对象
      method - 方法
      args - 参数
      Returns:
      方法返回值
    • getMethods

      public static Method[] getMethods(Class<?> clazz, Predicate<Method> filter)
      获取满足条件的方法
      Parameters:
      clazz - 类
      filter - 过滤条件
      Returns:
      方法数组
    • getMethods

      public static Method[] getMethods(Class<?> clazz)
      获取类的所有方法(包括父类)
      Parameters:
      clazz - 类
      Returns:
      方法数组