public class ReflectionUtils
extends java.lang.Object
| 限定符和类型 | 字段和说明 |
|---|---|
static java.lang.String |
PROP_CLASSNAME |
static java.lang.String |
PROP_CONSTRUCTORARGS |
static java.lang.String |
PROP_CONSTRUCTORPARAMS |
static java.lang.String |
PROP_PARAMETERTYPES |
static java.lang.String |
PROP_STATICMETHODNAME |
| 构造器和说明 |
|---|
ReflectionUtils() |
| 限定符和类型 | 方法和说明 |
|---|---|
static java.lang.reflect.Field |
getField(java.lang.Class<?> clazz,
java.lang.String name)
递归返回类型为声明的字段
如果当前中没有找到则向上到父类查找,输入参数为 null返回null |
static java.lang.reflect.Field |
getFieldUnchecked(java.lang.Class<?> clazz,
java.lang.String name) |
static <T> T |
getInstance(java.lang.Class<T> superClass,
java.util.Map<java.lang.String,java.lang.Object> params) |
static <T> T |
getInstanceByConstructor(java.lang.Class<T> superClass,
java.lang.Class<? extends T> instanceClass,
java.lang.Class<?>[] parameterTypes,
java.lang.Object[] constructorArgs) |
static <T> T |
getInstanceByConstructor(java.lang.Class<T> superClass,
java.lang.Class<? extends T> instanceClass,
java.util.LinkedHashMap<java.lang.Class<?>,java.lang.Object> constructorParams) |
static <T> T |
getInstanceByStaticMethod(java.lang.Class<T> superClass,
java.lang.Class<? extends T> instanceClass,
java.lang.String staticMethodName) |
static <T> java.lang.Class<? extends T> |
getInstanceClass(java.lang.Class<T> superClass,
java.lang.String instanceClassName) |
static java.lang.reflect.Method |
getOverride(java.lang.reflect.Method input)
返回输入的方法重写的父类的方法
|
static java.lang.Class<?> |
getOverrideClass(java.lang.reflect.Method method)
如果指定方法为覆盖(override)或实现接口方法,则自底向上查找此方法覆盖的方法所在的父类或接口类,
返回第一个找到覆盖方法所声明的类,如:
A为接口类,B实现了A的方法test,C继承B,覆盖了test,则此方法调用返回为B
|
static java.lang.Class<?> |
getOverrideClassRecursive(java.lang.Class<?> declaringClass,
java.lang.String methodName,
java.lang.Class<?>... parameterTypes)
(递归)如果指定方法为覆盖(override)或实现接口方法,则自底向上查找此方法覆盖的方法所在的父类或接口类,
返回第一个找到覆盖方法所声明的类,如:
A为接口类,B实现了A的方法test,C继承B,覆盖了test,则此方法调用返回为B
|
static java.lang.reflect.Method |
getOverrideObjectMethod(java.lang.reflect.Method input)
如果输入的方法为重写
Object类的方法("clone","finalize","hashCode","equals","toString")
则返回Object类对应的方法,否则返回null |
static java.lang.reflect.Method |
getOverrideTop(java.lang.reflect.Method input)
返回输入的方法重写的顶级父类的方法
|
static java.lang.Class<?> |
getOverrideTopClass(java.lang.Class<?> declaringClass,
java.lang.String methodName,
java.lang.Class<?>... parameterTypes)
如果指定方法为覆盖(override)或实现接口方法,则自底向上查找此方法覆盖的方法所在的父类或接口类,
返回最顶层被覆盖方法所声明的类,如:
A为接口类,B实现了A的方法test,C继承B,覆盖了test,则此方法调用返回为A
|
static java.lang.Class<?> |
getOverrideTopClass(java.lang.reflect.Method method)
如果指定方法为覆盖(override)或实现接口方法,则自底向上查找此方法覆盖的方法所在的父类或接口类,
返回最顶层被覆盖方法所声明的类,如:
A为接口类,B实现了A的方法test,C继承B,覆盖了test,则此方法调用返回为A
|
static boolean |
isOverride(java.lang.reflect.Method method)
返回方法是否为覆盖方法
|
static boolean |
isOverrideObjectMethod(java.lang.reflect.Method input)
判断方法是否为重写Object的方法
|
static boolean |
isOverrideShadow(java.lang.reflect.Method input)
判断
input是否为残存的影子方法如果在方法声明的类 Method.getDeclaringClass()中使用根据input的名字和参数查找方法找到的方法与input不相同,
即为因残存的被重写的父类方法,因返回类型不相同而残存 |
static java.lang.reflect.Method |
overrideTopOrSelf(java.lang.reflect.Method input)
如果输入方法(
input)为重写方法则返回重写的顶级父类的方法,否则返回input |
static void |
setValueOfField(java.lang.Object object,
java.lang.String name,
java.lang.Object value)
反射修改
object的私有成员 |
static void |
setValueOfStaticField(java.lang.Class<?> clazz,
java.lang.String name,
java.lang.Object value)
反射修改
clazz的静态私有成员 |
static <T> T |
valueOfField(java.lang.Object object,
java.lang.String name)
反射获取
object的私有成员 |
public static final java.lang.String PROP_CLASSNAME
public static final java.lang.String PROP_STATICMETHODNAME
public static final java.lang.String PROP_PARAMETERTYPES
public static final java.lang.String PROP_CONSTRUCTORARGS
public static final java.lang.String PROP_CONSTRUCTORPARAMS
public static <T> java.lang.Class<? extends T> getInstanceClass(java.lang.Class<T> superClass,
java.lang.String instanceClassName)
throws java.lang.ClassNotFoundException
java.lang.ClassNotFoundExceptionpublic static <T> T getInstance(java.lang.Class<T> superClass,
java.util.Map<java.lang.String,java.lang.Object> params)
throws java.lang.NoSuchMethodException,
java.lang.ClassNotFoundException
java.lang.NoSuchMethodExceptionjava.lang.ClassNotFoundExceptionpublic static <T> T getInstanceByConstructor(java.lang.Class<T> superClass,
java.lang.Class<? extends T> instanceClass,
java.lang.Class<?>[] parameterTypes,
java.lang.Object[] constructorArgs)
throws java.lang.NoSuchMethodException
java.lang.NoSuchMethodExceptionpublic static <T> T getInstanceByConstructor(java.lang.Class<T> superClass,
java.lang.Class<? extends T> instanceClass,
java.util.LinkedHashMap<java.lang.Class<?>,java.lang.Object> constructorParams)
throws java.lang.NoSuchMethodException
java.lang.NoSuchMethodExceptionpublic static <T> T getInstanceByStaticMethod(java.lang.Class<T> superClass,
java.lang.Class<? extends T> instanceClass,
java.lang.String staticMethodName)
throws java.lang.NoSuchMethodException
java.lang.NoSuchMethodExceptionpublic static <T> T valueOfField(java.lang.Object object,
java.lang.String name)
object的私有成员object - name - public static void setValueOfField(java.lang.Object object,
java.lang.String name,
java.lang.Object value)
object的私有成员object - 对象name - 成员名value - 成员值public static void setValueOfStaticField(java.lang.Class<?> clazz,
java.lang.String name,
java.lang.Object value)
clazz的静态私有成员clazz - 类型name - 成员名value - 成员值public static java.lang.reflect.Method getOverride(java.lang.reflect.Method input)
input - input为null或非重写父类方法则返回nullpublic static java.lang.reflect.Method getOverrideTop(java.lang.reflect.Method input)
input - input为null或非重写父类方法则返回nullgetOverride(Method)public static java.lang.reflect.Method overrideTopOrSelf(java.lang.reflect.Method input)
input)为重写方法则返回重写的顶级父类的方法,否则返回inputinput - input为null或非重写父类方法则返回nullgetOverride(Method)public static java.lang.reflect.Method getOverrideObjectMethod(java.lang.reflect.Method input)
Object类的方法("clone","finalize","hashCode","equals","toString")
则返回Object类对应的方法,否则返回nullinput - input为null返回nullpublic static boolean isOverrideObjectMethod(java.lang.reflect.Method input)
input - public static boolean isOverrideShadow(java.lang.reflect.Method input)
input是否为残存的影子方法Method.getDeclaringClass()中使用根据input的名字和参数查找方法找到的方法与input不相同,
即为因残存的被重写的父类方法,因返回类型不相同而残存input - input为null返回falsepublic static java.lang.Class<?> getOverrideClassRecursive(java.lang.Class<?> declaringClass,
java.lang.String methodName,
java.lang.Class<?>... parameterTypes)
declaringClass - 声明方法的类methodName - 方法名parameterTypes - 方法参数null,输入参数为null则返回nullpublic static java.lang.Class<?> getOverrideTopClass(java.lang.Class<?> declaringClass,
java.lang.String methodName,
java.lang.Class<?>... parameterTypes)
declaringClass - 声明方法的类methodName - 方法名parameterTypes - 方法参数null,输入参数为null则返回nullpublic static java.lang.Class<?> getOverrideClass(java.lang.reflect.Method method)
method - null,输入参数为null则返回nullgetOverrideClassRecursive(Class, String, Class...)public static java.lang.Class<?> getOverrideTopClass(java.lang.reflect.Method method)
method - null,输入参数为null则返回nullgetOverrideTopClass(Class, String, Class...)public static boolean isOverride(java.lang.reflect.Method method)
method - public static java.lang.reflect.Field getField(java.lang.Class<?> clazz,
java.lang.String name)
throws java.lang.NoSuchFieldException
null返回nullclazz - name - java.lang.NoSuchFieldException - 没有找到指定的成员public static java.lang.reflect.Field getFieldUnchecked(java.lang.Class<?> clazz,
java.lang.String name)
clazz - name - nullgetField(Class, String)Copyright © 2023. All Rights Reserved.