public class ReflectUtil
extends java.lang.Object
| 构造器和说明 |
|---|
ReflectUtil() |
| 限定符和类型 | 方法和说明 |
|---|---|
static <T> java.lang.reflect.Constructor<T> |
getConstructor(java.lang.Class<T> clazz,
java.lang.Class<?>... parameterTypes)
查找类中的指定参数的构造方法,如果找到构造方法,会自动设置可访问为true
|
static <T> java.lang.reflect.Constructor<T>[] |
getConstructors(java.lang.Class<T> beanClass)
获得一个类中所有构造列表
|
static java.lang.reflect.Constructor<?>[] |
getConstructorsDirectly(java.lang.Class<?> beanClass)
获得一个类中所有字段列表,直接反射获取,无缓存
|
static java.lang.reflect.Field |
getField(java.lang.Class<?> beanClass,
java.lang.String name)
查找指定类中的所有字段(包括非public字段),也包括父类和Object类的字段, 字段不存在则返回
null |
static java.lang.reflect.Field[] |
getFields(java.lang.Class<?> beanClass)
获得一个类中所有字段列表,包括其父类中的字段
|
static java.lang.reflect.Field[] |
getFieldsDirectly(java.lang.Class<?> beanClass,
boolean withSuperClassFieds)
获得一个类中所有字段列表,直接反射获取,无缓存
|
static java.lang.Object[] |
getFieldsValue(java.lang.Object obj)
获取所有字段的值
|
static java.lang.Object |
getFieldValue(java.lang.Object obj,
java.lang.reflect.Field field)
获取字段值
|
static java.lang.Object |
getFieldValue(java.lang.Object obj,
java.lang.String fieldName)
获取字段值
|
static java.lang.reflect.Method |
getMethod(java.lang.Class<?> clazz,
boolean ignoreCase,
java.lang.String methodName,
java.lang.Class<?>... paramTypes)
查找指定方法 如果找不到对应的方法则返回
null |
static java.lang.reflect.Method |
getMethod(java.lang.Class<?> clazz,
java.lang.String methodName,
java.lang.Class<?>... paramTypes)
查找指定方法 如果找不到对应的方法则返回
null |
static java.lang.reflect.Method |
getMethodIgnoreCase(java.lang.Class<?> clazz,
java.lang.String methodName,
java.lang.Class<?>... paramTypes)
忽略大小写查找指定方法,如果找不到对应的方法则返回
null |
static java.util.Set<java.lang.String> |
getMethodNames(java.lang.Class<?> clazz)
获得指定类中的Public方法名
去重重载的方法 |
static java.lang.reflect.Method |
getMethodOfObj(java.lang.Object obj,
java.lang.String methodName,
java.lang.Object... args)
查找指定对象中的所有方法(包括非public方法),也包括父对象和Object类的方法
|
static java.lang.reflect.Method[] |
getMethods(java.lang.Class<?> beanClass)
获得一个类中所有方法列表,包括其父类中的方法
|
static java.lang.reflect.Method[] |
getMethods(java.lang.Class<?> clazz,
Filter<java.lang.reflect.Method> filter)
获得指定类过滤后的Public方法列表
|
static java.lang.reflect.Method[] |
getMethodsDirectly(java.lang.Class<?> beanClass,
boolean withSuperClassMethods)
获得一个类中所有方法列表,直接反射获取,无缓存
|
static <T> T |
invoke(java.lang.Object obj,
java.lang.reflect.Method method,
java.lang.Object... args)
执行方法
|
static <T> T |
invoke(java.lang.Object obj,
java.lang.String methodName,
java.lang.Object... args)
执行对象中指定方法
|
static <T> T |
invokeStatic(java.lang.reflect.Method method,
java.lang.Object... args)
执行静态方法
|
static <T> T |
invokeWithCheck(java.lang.Object obj,
java.lang.reflect.Method method,
java.lang.Object... args)
执行方法
执行前要检查给定参数: 1. |
static boolean |
isEqualsMethod(java.lang.reflect.Method method)
是否为equals方法
|
static boolean |
isHashCodeMethod(java.lang.reflect.Method method)
是否为hashCode方法
|
static boolean |
isToStringMethod(java.lang.reflect.Method method)
是否为toString方法
|
static <T> T |
newInstance(java.lang.Class<T> clazz,
java.lang.Object... params)
实例化对象
|
static <T> T |
newInstance(java.lang.String clazz)
实例化对象
|
static <T> T |
newInstanceIfPossible(java.lang.Class<T> beanClass)
尝试遍历并调用此类的所有构造方法,直到构造成功并返回
|
static void |
setFieldValue(java.lang.Object obj,
java.lang.reflect.Field field,
java.lang.Object value)
设置字段值
|
static void |
setFieldValue(java.lang.Object obj,
java.lang.String fieldName,
java.lang.Object value)
设置字段值
|
public static <T> java.lang.reflect.Constructor<T> getConstructor(java.lang.Class<T> clazz,
java.lang.Class<?>... parameterTypes)
T - 对象类型clazz - 类parameterTypes - 参数类型,只要任何一个参数是指定参数的父类或接口或相等即可,此参数可以不传public static <T> java.lang.reflect.Constructor<T>[] getConstructors(java.lang.Class<T> beanClass)
throws java.lang.SecurityException
T - 构造的对象类型beanClass - 类java.lang.SecurityException - 安全检查异常public static java.lang.reflect.Constructor<?>[] getConstructorsDirectly(java.lang.Class<?> beanClass)
throws java.lang.SecurityException
beanClass - 类java.lang.SecurityException - 安全检查异常public static java.lang.reflect.Field getField(java.lang.Class<?> beanClass,
java.lang.String name)
throws java.lang.SecurityException
nullbeanClass - 被查找字段的类,不能为nullname - 字段名java.lang.SecurityException - 安全异常public static java.lang.reflect.Field[] getFields(java.lang.Class<?> beanClass)
throws java.lang.SecurityException
beanClass - 类java.lang.SecurityException - 安全检查异常public static java.lang.reflect.Field[] getFieldsDirectly(java.lang.Class<?> beanClass,
boolean withSuperClassFieds)
throws java.lang.SecurityException
beanClass - 类withSuperClassFieds - 是否包括父类的字段列表java.lang.SecurityException - 安全检查异常public static java.lang.Object getFieldValue(java.lang.Object obj,
java.lang.String fieldName)
throws UtilException
obj - 对象fieldName - 字段名UtilException - 包装IllegalAccessException异常public static java.lang.Object getFieldValue(java.lang.Object obj,
java.lang.reflect.Field field)
throws UtilException
obj - 对象field - 字段UtilException - 包装IllegalAccessException异常public static java.lang.Object[] getFieldsValue(java.lang.Object obj)
obj - bean对象public static void setFieldValue(java.lang.Object obj,
java.lang.String fieldName,
java.lang.Object value)
throws UtilException
obj - 对象fieldName - 字段名value - 值,值类型必须与字段类型匹配,不会自动转换对象类型UtilException - 包装IllegalAccessException异常public static void setFieldValue(java.lang.Object obj,
java.lang.reflect.Field field,
java.lang.Object value)
throws UtilException
obj - 对象field - 字段value - 值,值类型必须与字段类型匹配,不会自动转换对象类型UtilException - UtilException 包装IllegalAccessException异常public static java.lang.reflect.Method getMethodOfObj(java.lang.Object obj,
java.lang.String methodName,
java.lang.Object... args)
throws java.lang.SecurityException
obj - 被查找的对象,如果为null返回nullmethodName - 方法名,如果为空字符串返回nullargs - 参数java.lang.SecurityException - 无访问权限抛出异常public static java.lang.reflect.Method getMethodIgnoreCase(java.lang.Class<?> clazz,
java.lang.String methodName,
java.lang.Class<?>... paramTypes)
throws java.lang.SecurityException
nullclazz - 类,如果为null返回nullmethodName - 方法名,如果为空字符串返回nullparamTypes - 参数类型,指定参数类型如果是方法的子类也算java.lang.SecurityException - 无权访问抛出异常public static java.lang.reflect.Method getMethod(java.lang.Class<?> clazz,
java.lang.String methodName,
java.lang.Class<?>... paramTypes)
throws java.lang.SecurityException
nullclazz - 类,如果为null返回nullmethodName - 方法名,如果为空字符串返回nullparamTypes - 参数类型,指定参数类型如果是方法的子类也算java.lang.SecurityException - 无权访问抛出异常public static java.lang.reflect.Method getMethod(java.lang.Class<?> clazz,
boolean ignoreCase,
java.lang.String methodName,
java.lang.Class<?>... paramTypes)
throws java.lang.SecurityException
nullclazz - 类,如果为null返回nullignoreCase - 是否忽略大小写methodName - 方法名,如果为空字符串返回nullparamTypes - 参数类型,指定参数类型如果是方法的子类也算java.lang.SecurityException - 无权访问抛出异常public static java.util.Set<java.lang.String> getMethodNames(java.lang.Class<?> clazz)
throws java.lang.SecurityException
clazz - 类java.lang.SecurityException - 安全异常public static java.lang.reflect.Method[] getMethods(java.lang.Class<?> clazz,
Filter<java.lang.reflect.Method> filter)
throws java.lang.SecurityException
clazz - 查找方法的类filter - 过滤器java.lang.SecurityException - 安全异常public static java.lang.reflect.Method[] getMethods(java.lang.Class<?> beanClass)
throws java.lang.SecurityException
beanClass - 类java.lang.SecurityException - 安全检查异常public static java.lang.reflect.Method[] getMethodsDirectly(java.lang.Class<?> beanClass,
boolean withSuperClassMethods)
throws java.lang.SecurityException
beanClass - 类withSuperClassMethods - 是否包括父类的方法列表java.lang.SecurityException - 安全检查异常public static boolean isEqualsMethod(java.lang.reflect.Method method)
method - 方法public static boolean isHashCodeMethod(java.lang.reflect.Method method)
method - 方法public static boolean isToStringMethod(java.lang.reflect.Method method)
method - 方法public static <T> T newInstance(java.lang.String clazz)
throws UtilException
T - 对象类型clazz - 类名UtilException - 包装各类异常public static <T> T newInstance(java.lang.Class<T> clazz,
java.lang.Object... params)
throws UtilException
T - 对象类型clazz - 类params - 构造函数参数UtilException - 包装各类异常public static <T> T newInstanceIfPossible(java.lang.Class<T> beanClass)
T - 对象类型beanClass - 被构造的类public static <T> T invokeStatic(java.lang.reflect.Method method,
java.lang.Object... args)
throws UtilException
T - 对象类型method - 方法(对象方法或static方法都可)args - 参数对象UtilException - 多种异常包装public static <T> T invokeWithCheck(java.lang.Object obj,
java.lang.reflect.Method method,
java.lang.Object... args)
throws UtilException
1. 参数个数是否与方法参数个数一致 2. 如果某个参数为null但是方法这个位置的参数为原始类型,则赋予原始类型默认值
T - 返回对象类型obj - 对象,如果执行静态方法,此值为nullmethod - 方法(对象方法或static方法都可)args - 参数对象UtilException - 一些列异常的包装public static <T> T invoke(java.lang.Object obj,
java.lang.reflect.Method method,
java.lang.Object... args)
throws UtilException
T - 返回对象类型obj - 对象,如果执行静态方法,此值为nullmethod - 方法(对象方法或static方法都可)args - 参数对象UtilException - 一些列异常的包装public static <T> T invoke(java.lang.Object obj,
java.lang.String methodName,
java.lang.Object... args)
throws UtilException
T - 返回对象类型obj - 方法所在对象methodName - 方法名args - 参数列表UtilException - IllegalAccessException包装Copyright © 2018. All rights reserved.