Package com.ultikits.ultitools.utils
Class ReflectionUtil
java.lang.Object
com.ultikits.ultitools.utils.ReflectionUtil
反射工具类
替代 hutool ReflectUtil / AnnotationUtil
- Since:
- 6.2.0
- Author:
- wisdomme
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptiongetAllFields(Class<?> clazz) 获取类的所有字段(包括父类)static <A extends Annotation>
AgetAnnotation(Class<?> clazz, Class<A> annotationClass) 获取类上的注解static <A extends Annotation>
AgetAnnotation(Field field, Class<A> annotationClass) 获取字段上的注解static Field获取指定字段static Field[]获取类的所有字段(包括父类)static ObjectgetFieldValue(Object obj, Field field) 获取字段值static ObjectgetFieldValue(Object obj, String fieldName) 获取字段值static Method[]getMethods(Class<?> clazz) 获取类的所有方法(包括父类)static Method[]getMethods(Class<?> clazz, Predicate<Method> filter) 获取满足条件的方法private static Class<?> getPrimitiveWrapper(Class<?> primitive) 获取基本类型对应的包装类static booleanhasAnnotation(Class<?> clazz, Class<? extends Annotation> annotationClass) 判断类是否有指定注解static booleanhasAnnotation(Field field, Class<? extends Annotation> annotationClass) 判断字段是否有指定注解static <T> T调用方法private static booleanisAssignable(Class<?> target, Class<?> source) 判断类型是否可赋值static <T> TnewInstance(Class<T> clazz) 创建实例(使用无参构造器)static <T> TnewInstance(Class<T> clazz, Object... params) 创建实例(使用带参数的构造器)static <T> TnewInstanceIfPossible(Class<T> clazz) 创建实例(使用无参构造器,支持私有构造器)static voidsetFieldValue(Object obj, Field field, Object value) 设置字段值static voidsetFieldValue(Object obj, String fieldName, Object value) 设置字段值
-
Constructor Details
-
ReflectionUtil
private ReflectionUtil()
-
-
Method Details
-
getAllFields
获取类的所有字段(包括父类)- Parameters:
clazz- 类- Returns:
- 字段列表
-
getFields
获取类的所有字段(包括父类)- Parameters:
clazz- 类- Returns:
- 字段数组
-
getFieldValue
获取字段值- Parameters:
obj- 对象field- 字段- Returns:
- 字段值
-
getFieldValue
获取字段值- Parameters:
obj- 对象fieldName- 字段名- Returns:
- 字段值
-
setFieldValue
设置字段值- Parameters:
obj- 对象field- 字段value- 值
-
setFieldValue
设置字段值- Parameters:
obj- 对象fieldName- 字段名value- 值
-
getField
获取指定字段- Parameters:
clazz- 类fieldName- 字段名- Returns:
- 字段,找不到返回 null
-
newInstance
创建实例(使用无参构造器)- Type Parameters:
T- 类型- Parameters:
clazz- 类- Returns:
- 实例
-
newInstance
创建实例(使用带参数的构造器)- Type Parameters:
T- 类型- Parameters:
clazz- 类params- 构造器参数- Returns:
- 实例
-
isAssignable
判断类型是否可赋值 -
getPrimitiveWrapper
获取基本类型对应的包装类 -
newInstanceIfPossible
创建实例(使用无参构造器,支持私有构造器)- Type Parameters:
T- 类型- Parameters:
clazz- 类- Returns:
- 实例
-
getAnnotation
获取类上的注解- Type Parameters:
A- 注解类型- Parameters:
clazz- 类annotationClass- 注解类型- Returns:
- 注解实例,不存在返回 null
-
getAnnotation
获取字段上的注解- Type Parameters:
A- 注解类型- Parameters:
field- 字段annotationClass- 注解类型- Returns:
- 注解实例,不存在返回 null
-
hasAnnotation
判断类是否有指定注解- Parameters:
clazz- 类annotationClass- 注解类型- Returns:
- 是否有注解
-
hasAnnotation
判断字段是否有指定注解- Parameters:
field- 字段annotationClass- 注解类型- Returns:
- 是否有注解
-
invoke
调用方法- Type Parameters:
T- 返回类型- Parameters:
obj- 对象method- 方法args- 参数- Returns:
- 方法返回值
-
getMethods
获取满足条件的方法- Parameters:
clazz- 类filter- 过滤条件- Returns:
- 方法数组
-
getMethods
获取类的所有方法(包括父类)- Parameters:
clazz- 类- Returns:
- 方法数组
-