类 ReflectUtils
java.lang.Object
com.alibaba.ageiport.common.utils.ReflectUtils
反射工具类
- 作者:
- xuechao.sxc
-
构造器概要
构造器 -
方法概要
修饰符和类型方法说明static <T> Constructor<T>getConstructor(Class<T> clazz, Class<?>... parameterTypes) 查找类中的指定参数的构造方法,如果找到构造方法,会自动设置可访问为truestatic <T> Constructor<T>[]getConstructors(Class<T> beanClass) 获得一个类中所有构造列表static Constructor<?>[]getConstructorsDirectly(Class<?> beanClass) 获得一个类中所有字段列表,直接反射获取,无缓存static Method查找指定方法 如果找不到对应的方法则返回nullstatic Method查找指定方法 如果找不到对应的方法则返回nullstatic MethodgetMethodIgnoreCase(Class<?> clazz, String methodName, Class<?>... paramTypes) 忽略大小写查找指定方法,如果找不到对应的方法则返回nullgetMethodNames(Class<?> clazz) 获得指定类中的Public方法名
去重重载的方法static MethodgetMethodOfObj(Object obj, String methodName, Object... args) 查找指定对象中的所有方法(包括非public方法),也包括父对象和Object类的方法static Method[]getMethods(Class<?> beanClass) 获得一个类中所有方法列表,包括其父类中的方法static Method[]getMethods(Class<?> clazz, Filter<Method> filter) 获得指定类过滤后的Public方法列表static Method[]getMethodsDirectly(Class<?> beanClass, boolean withSuperClassMethods) 获得一个类中所有方法列表,直接反射获取,无缓存static MethodgetPublicMethod(Class<?> clazz, String methodName, Class<?>... paramTypes) 查找指定Public方法 如果找不到对应的方法或方法不为public的则返回nullgetPublicMethodNames(Class<?> clazz) 获得指定类本类及其父类中的Public方法名
去重重载的方法static Method[]getPublicMethods(Class<?> clazz) 获得本类及其父类所有Public方法getPublicMethods(Class<?> clazz, Filter<Method> filter) 获得指定类过滤后的Public方法列表getPublicMethods(Class<?> clazz, Method... excludeMethods) 获得指定类过滤后的Public方法列表getPublicMethods(Class<?> clazz, String... excludeMethodNames) 获得指定类过滤后的Public方法列表static booleanisPrimitive(Class<?> cls) static booleanisPrimitives(Class<?> cls) static <T> TnewInstance(Class<T> clazz, Object... params) 实例化对象static <T> TnewInstance(String clazz) 实例化对象static <T> TnewInstanceIfPossible(Class<T> beanClass) 尝试遍历并调用此类的所有构造方法,直到构造成功并返回static <T extends AccessibleObject>
TsetAccessible(T accessibleObject) 设置方法为可访问(私有方法可以被外部调用)static voidsetFieldValue(Object obj, Field field, Object value) 设置字段值
-
构造器详细资料
-
ReflectUtils
public ReflectUtils()
-
-
方法详细资料
-
isPrimitives
-
isPrimitive
-
getConstructor
查找类中的指定参数的构造方法,如果找到构造方法,会自动设置可访问为true- 类型参数:
T- 对象类型- 参数:
clazz- 类parameterTypes- 参数类型,只要任何一个参数是指定参数的父类或接口或相等即可,此参数可以不传- 返回:
- 构造方法,如果未找到返回null
-
getConstructors
获得一个类中所有构造列表- 类型参数:
T- 构造的对象类型- 参数:
beanClass- 类- 返回:
- 字段列表
- 抛出:
SecurityException- 安全检查异常
-
getConstructorsDirectly
获得一个类中所有字段列表,直接反射获取,无缓存- 参数:
beanClass- 类- 返回:
- 字段列表
- 抛出:
SecurityException- 安全检查异常
-
setFieldValue
设置字段值- 参数:
obj- 对象,如果是static字段,此参数为nullfield- 字段value- 值,值类型必须与字段类型匹配,不会自动转换对象类型- 抛出:
UtilException- UtilException 包装IllegalAccessException异常
-
getPublicMethodNames
获得指定类本类及其父类中的Public方法名
去重重载的方法- 参数:
clazz- 类- 返回:
- 方法名Set
-
getPublicMethods
获得本类及其父类所有Public方法- 参数:
clazz- 查找方法的类- 返回:
- 过滤后的方法列表
-
getPublicMethods
获得指定类过滤后的Public方法列表- 参数:
clazz- 查找方法的类filter- 过滤器- 返回:
- 过滤后的方法列表
-
getPublicMethods
获得指定类过滤后的Public方法列表- 参数:
clazz- 查找方法的类excludeMethods- 不包括的方法- 返回:
- 过滤后的方法列表
-
getPublicMethods
获得指定类过滤后的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返回nullmethodName- 方法名,如果为空字符串返回nullargs- 参数- 返回:
- 方法
- 抛出:
SecurityException- 无访问权限抛出异常
-
getMethodIgnoreCase
public static Method getMethodIgnoreCase(Class<?> clazz, String methodName, Class<?>... paramTypes) throws SecurityException 忽略大小写查找指定方法,如果找不到对应的方法则返回null此方法为精准获取方法名,即方法名和参数数量和类型必须一致,否则返回
null。- 参数:
clazz- 类,如果为null返回nullmethodName- 方法名,如果为空字符串返回nullparamTypes- 参数类型,指定参数类型如果是方法的子类也算- 返回:
- 方法
- 抛出:
SecurityException- 无权访问抛出异常
-
getMethod
public static Method getMethod(Class<?> clazz, String methodName, Class<?>... paramTypes) throws SecurityException 查找指定方法 如果找不到对应的方法则返回null此方法为精准获取方法名,即方法名和参数数量和类型必须一致,否则返回
null。- 参数:
clazz- 类,如果为null返回nullmethodName- 方法名,如果为空字符串返回nullparamTypes- 参数类型,指定参数类型如果是方法的子类也算- 返回:
- 方法
- 抛出:
SecurityException- 无权访问抛出异常
-
getMethod
public static Method getMethod(Class<?> clazz, boolean ignoreCase, String methodName, Class<?>... paramTypes) throws SecurityException 查找指定方法 如果找不到对应的方法则返回null此方法为精准获取方法名,即方法名和参数数量和类型必须一致,否则返回
null。- 参数:
clazz- 类,如果为null返回nullignoreCase- 是否忽略大小写methodName- 方法名,如果为空字符串返回nullparamTypes- 参数类型,指定参数类型如果是方法的子类也算- 返回:
- 方法
- 抛出:
SecurityException- 无权访问抛出异常
-
getMethodNames
获得指定类中的Public方法名
去重重载的方法- 参数:
clazz- 类- 返回:
- 方法名Set
- 抛出:
SecurityException- 安全异常
-
getMethods
获得指定类过滤后的Public方法列表- 参数:
clazz- 查找方法的类filter- 过滤器- 返回:
- 过滤后的方法列表
- 抛出:
SecurityException- 安全异常
-
getMethods
获得一个类中所有方法列表,包括其父类中的方法- 参数:
beanClass- 类- 返回:
- 方法列表
- 抛出:
SecurityException- 安全检查异常
-
getMethodsDirectly
public static Method[] getMethodsDirectly(Class<?> beanClass, boolean withSuperClassMethods) throws SecurityException 获得一个类中所有方法列表,直接反射获取,无缓存- 参数:
beanClass- 类withSuperClassMethods- 是否包括父类的方法列表- 返回:
- 方法列表
- 抛出:
SecurityException- 安全检查异常
-
newInstance
实例化对象- 类型参数:
T- 对象类型- 参数:
clazz- 类名- 返回:
- 对象
- 抛出:
UtilException- 包装各类异常
-
newInstance
实例化对象- 类型参数:
T- 对象类型- 参数:
clazz- 类params- 构造函数参数- 返回:
- 对象
- 抛出:
UtilException- 包装各类异常
-
newInstanceIfPossible
尝试遍历并调用此类的所有构造方法,直到构造成功并返回- 类型参数:
T- 对象类型- 参数:
beanClass- 被构造的类- 返回:
- 构造后的对象
-
setAccessible
设置方法为可访问(私有方法可以被外部调用)- 类型参数:
T- AccessibleObject的子类,比如Class、Method、Field等- 参数:
accessibleObject- 可设置访问权限的对象,比如Class、Method、Field等- 返回:
- 被设置可访问的对象
-