public class ReflectionsUtil extends Object
| 构造器和说明 |
|---|
ReflectionsUtil() |
| 限定符和类型 | 方法和说明 |
|---|---|
static RuntimeException |
convertReflectionExceptionToUnchecked(Exception e)
将反射时的checked exception转换为unchecked exception.
|
static Field |
getAccessibleField(Object obj,
String fieldName)
循环向上转型, 获取对象的DeclaredField, 并强制设置为可访问.
|
static Method |
getAccessibleMethod(Object obj,
String methodName,
Class<?>... parameterTypes)
循环向上转型, 获取对象的DeclaredMethod,并强制设置为可访问.
|
static Method |
getAccessibleMethodByName(Object obj,
String methodName)
循环向上转型, 获取对象的DeclaredMethod,并强制设置为可访问.
|
static <T> Class<T> |
getClassGenricType(Class clazz)
通过反射, 获得Class定义中声明的泛型参数的类型, 注意泛型必须定义在父类处 如无法找到, 返回Object.class. eg.
|
static Class |
getClassGenricType(Class clazz,
int index)
通过反射, 获得Class定义中声明的父类的泛型参数的类型.
|
static Object |
getFieldValue(Object obj,
String fieldName)
直接读取对象属性值, 无视private/protected修饰符, 不经过getter函数.
|
static Class<?> |
getUserClass(Object instance) |
static Object |
invokeGetter(Object obj,
String propertyName)
调用Getter方法.
|
static Object |
invokeMethod(Object obj,
String methodName,
Class<?>[] parameterTypes,
Object[] args)
直接调用对象方法, 无视private/protected修饰符.
|
static Object |
invokeMethodByName(Object obj,
String methodName,
Object[] args)
直接调用对象方法, 无视private/protected修饰符,
用于一次性调用的情况,否则应使用getAccessibleMethodByName()函数获得Method后反复调用.
|
static void |
invokeSetter(Object obj,
String propertyName,
Object value)
调用Setter方法, 仅匹配方法名。
|
static void |
makeAccessible(Field field)
改变private/protected的成员变量为public,尽量不调用实际改动的语句,避免JDK的SecurityManager抱怨。
|
static void |
makeAccessible(Method method)
改变private/protected的方法为public,尽量不调用实际改动的语句,避免JDK的SecurityManager抱怨。
|
static void |
setFieldValue(Object obj,
String fieldName,
Object value)
直接设置对象属性值, 无视private/protected修饰符, 不经过setter函数.
|
public static Object invokeGetter(Object obj, String propertyName)
public static void invokeSetter(Object obj, String propertyName, Object value)
public static Object getFieldValue(Object obj, String fieldName)
public static void setFieldValue(Object obj, String fieldName, Object value)
public static Object invokeMethod(Object obj, String methodName, Class<?>[] parameterTypes, Object[] args)
public static Object invokeMethodByName(Object obj, String methodName, Object[] args)
public static Field getAccessibleField(Object obj, String fieldName)
public static Method getAccessibleMethod(Object obj, String methodName, Class<?>... parameterTypes)
public static Method getAccessibleMethodByName(Object obj, String methodName)
public static void makeAccessible(Method method)
public static void makeAccessible(Field field)
public static <T> Class<T> getClassGenricType(Class clazz)
clazz - The class to introspectpublic static Class getClassGenricType(Class clazz, int index)
clazz - clazz The class to introspectindex - the Index of the generic ddeclaration,start from 0.public static RuntimeException convertReflectionExceptionToUnchecked(Exception e)
Copyright © 2020. All rights reserved.