|
|||||||||
上一个类 下一个类 | 框架 无框架 | ||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
java.lang.Objectorg.nutz.lang.Mirror<T>
T
- public class Mirror<T>
包裹了 Class>, 提供了更多的反射方法
方法摘要 | ||
---|---|---|
static java.lang.Object[] |
blankArrayArg(java.lang.Class<?>[] pts)
根据函数参数类型数组的最后一个类型(一定是数组,表示变参),为最后一个变参生成一个空数组 |
|
T |
born(java.lang.Object... args)
根据构造函数参数,创建一个对象。 |
|
boolean |
canCastToDirectly(java.lang.Class<?> type)
|
|
static java.lang.Object |
evalArgToRealArray(java.lang.Object... args)
将一个 Object[] 数组,变成一个真正的数组 T[] |
|
static java.lang.Object |
evalArgToSameTypeRealArray(java.lang.Object... args)
|
|
static void |
evalGetterSetter(java.lang.reflect.Method method,
Callback3<java.lang.String,java.lang.reflect.Method,java.lang.reflect.Method> callback,
Callback<java.lang.reflect.Method> whenError)
根据给定的一个方法,判断其是 Getter 还是 Setter 对于回调会接受三个参数 callback(虚字段名, getter, setter) 回调都会给一个参数,表示这个方法对应的虚拟字段名。 |
|
static void |
evalGetterSetter(java.lang.reflect.Method method,
java.lang.String errmsgFormat,
Callback3<java.lang.String,java.lang.reflect.Method,java.lang.reflect.Method> callback)
根据给定的一个方法,判断其是 Getter 还是 Setter,根据情况不同,调用不同的回调。 |
|
static java.lang.Class<?>[] |
evalToTypes(java.lang.Object... args)
将一组对象,变成一组类型 |
|
java.lang.Class<?>[] |
extractTypes()
|
|
static java.lang.reflect.Field |
findField(java.lang.Class<?> type,
java.lang.Class<? extends java.lang.annotation.Annotation> ann)
查找包含某一个特殊注解的字段 |
|
java.lang.reflect.Method |
findMethod(java.lang.Class<?> returnType,
java.lang.Class<?>... paramTypes)
根据返回值类型,以及参数类型,查找第一个匹配的方法 |
|
java.lang.reflect.Method |
findMethod(java.lang.String name,
java.lang.Class<?>... paramTypes)
查找一个方法。 |
|
java.lang.reflect.Method[] |
findMethods(java.lang.String name,
int argNumber)
根据名称和参数个数,查找一组方法 |
|
java.lang.reflect.Method[] |
findSetters(java.lang.String fieldName)
根据一个字段名,获取一组有可能成为 Setter 函数 |
|
java.lang.reflect.Method[] |
getAllDeclaredMethods(java.lang.Class<?> top)
获取当前对象,所有的方法,包括私有方法。 |
|
java.lang.reflect.Method[] |
getAllDeclaredMethodsWithoutTop()
相当于 getAllDeclaredMethods(Object.class) |
|
|
getAnnotation(java.lang.Class<A> annType)
向父类递归查找某一个运行时注解 |
|
Borning<T> |
getBorning(java.lang.Object... args)
获取对象构建器 |
|
Borning<T> |
getBorningByArgTypes(java.lang.Class<?>... argTypes)
获取对象构建器 |
|
static java.lang.String |
getConstructorDescriptor(java.lang.reflect.Constructor<?> c)
|
|
Ejecting |
getEjecting(java.lang.String fieldName)
根据字段名获得一个字段输入方式。 |
|
|
getField(java.lang.Class<AT> ann)
获取一个字段。 |
|
java.lang.reflect.Field |
getField(java.lang.String name)
获取一个字段。 |
|
java.lang.reflect.Field[] |
getFields()
获得当前类以及所有父类的所有的属性,包括私有属性。 |
|
|
getFields(java.lang.Class<AT> ann)
获取一组声明了特殊注解的字段 |
|
java.lang.reflect.Type |
getGenericsType(int index)
取得当前类型的指定泛型 |
|
java.lang.reflect.Type[] |
getGenericsTypes()
取得当前类型的泛型数组 |
|
static java.lang.Class<?>[] |
getGenericTypes(java.lang.reflect.Field f)
获取一个字段的泛型参数数组,如果这个字段没有泛型,返回空数组 |
|
static java.lang.Class<?> |
getGenericTypes(java.lang.reflect.Field f,
int index)
获取一个字段的某一个泛型参数,如果没有,返回 null |
|
java.lang.reflect.Method |
getGetter(java.lang.reflect.Field field)
根据字段获取一个 Getter。 |
|
java.lang.reflect.Method |
getGetter(java.lang.String fieldName)
根据名称获取一个 Getter。 |
|
Injecting |
getInjecting(java.lang.String fieldName)
根据字段名,得出一个字段注入方式。 |
|
Invoking |
getInvoking(java.lang.String methodName,
java.lang.Object... args)
根据函数名称和参数,返回一个函数调用方式 |
|
static java.lang.String |
getMethodDescriptor(java.lang.reflect.Method method)
|
|
java.lang.reflect.Method[] |
getMethods()
获取本类型所有的方法,包括私有方法。 |
|
java.lang.Class<?> |
getOuterClass()
|
|
static java.lang.String |
getParamDescriptor(java.lang.Class<?>[] parameterTypes)
|
|
static java.lang.String |
getPath(java.lang.Class<?> klass)
|
|
java.lang.reflect.Method |
getSetter(java.lang.reflect.Field field)
根据一个字段获取 Setter 比如,你想获取 abc 的 setter ,那么优先查找 setAbc(T abc),如果 没有,则查找 abc(T abc)。 |
|
java.lang.reflect.Method |
getSetter(java.lang.String fieldName,
java.lang.Class<?> paramType)
根据一个字段名和字段类型获取 Setter |
|
java.lang.reflect.Field[] |
getStaticField(boolean noFinal)
获得所有的静态变量属性 |
|
java.lang.reflect.Method[] |
getStaticMethods()
|
|
java.lang.Class<T> |
getType()
|
|
static java.lang.String |
getTypeDescriptor(java.lang.Class<?> klass)
|
|
static
|
getTypeParam(java.lang.Class<?> klass,
int index)
获取一个类的某个一个泛型参数 |
|
static java.lang.reflect.Type[] |
getTypeParams(java.lang.Class<?> klass)
获取一个类的泛型参数数组,如果这个类没有泛型参数,返回 null |
|
java.lang.Object |
getValue(java.lang.Object obj,
java.lang.reflect.Field f)
不调用 getter,直接获得字段的值 |
|
java.lang.Object |
getValue(java.lang.Object obj,
java.lang.String name)
优先通过 getter 获取字段值,如果没有,则直接获取字段值 |
|
java.lang.Class<?> |
getWrapper()
|
|
java.lang.Class<?> |
getWrapperClass()
|
|
java.lang.Object |
invoke(java.lang.Object obj,
java.lang.String methodName,
java.lang.Object... args)
调用对象的一个方法 |
|
boolean |
is(java.lang.Class<?> type)
判断当前对象是否为一个类型。 |
|
boolean |
is(java.lang.String className)
判断当前对象是否为一个类型。 |
|
boolean |
isArray()
判断当前类型是否为数组 |
|
boolean |
isBoolean()
|
|
boolean |
isByte()
|
|
boolean |
isChar()
|
|
boolean |
isColl()
|
|
boolean |
isCollection()
判断当前类型是否为 Collection |
|
boolean |
isContainer()
判断当前类型是否为容器,包括 Map,Collection, 以及数组 |
|
boolean |
isDateTimeLike()
|
|
boolean |
isDecimal()
|
|
boolean |
isDouble()
|
|
boolean |
isEnum()
|
|
boolean |
isFloat()
|
|
boolean |
isInt()
|
|
boolean |
isInterface()
|
|
boolean |
isIntLike()
|
|
boolean |
isLong()
|
|
boolean |
isMap()
判断当前类型是否为 Map |
|
boolean |
isNumber()
|
|
boolean |
isObj()
如果不是容器,也不是 POJO,那么它必然是个 Obj |
|
boolean |
isOf(java.lang.Class<?> type)
|
|
boolean |
isPojo()
判断当前类型是否为POJO。 |
|
boolean |
isPrimitiveNumber()
|
|
boolean |
isShort()
|
|
boolean |
isString()
|
|
boolean |
isStringLike()
|
|
boolean |
isWrapperOf(java.lang.Class<?> type)
|
|
static MatchType |
matchParamTypes(java.lang.Class<?>[] paramTypes,
java.lang.Class<?>[] argTypes)
匹配一个函数声明的参数类型数组和一个调用参数数组 |
|
static MatchType |
matchParamTypes(java.lang.Class<?>[] methodParamTypes,
java.lang.Object... args)
一个方法的参数类型同一个给定的参数数组是否可以匹配 |
|
static
|
me(java.lang.Class<T> classOfT)
包裹一个类 |
|
static
|
me(java.lang.Class<T> classOfT,
TypeExtractor typeExtractor)
包裹一个类,并设置自定义的类型提炼逻辑 |
|
static
|
me(T obj)
生成一个对象的 Mirror |
|
static
|
me(java.lang.reflect.Type type)
根据Type生成Mirror, 如果type是 ParameterizedType 类型的对象可以使用 getGenericsTypes() 方法取得它的泛型数组 |
|
Mirror<T> |
setTypeExtractor(TypeExtractor typeExtractor)
设置自己的类型提炼逻辑 |
|
void |
setValue(java.lang.Object obj,
java.lang.reflect.Field field,
java.lang.Object value)
为对象的一个字段设值。 |
|
void |
setValue(java.lang.Object obj,
java.lang.String fieldName,
java.lang.Object value)
为对象的一个字段设值。 |
|
java.lang.String |
toString()
|
|
java.lang.Class<?> |
unWrapper()
|
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
方法详细信息 |
---|
public static <T> Mirror<T> me(java.lang.Class<T> classOfT)
classOfT
- 类
public static <T> Mirror<T> me(T obj)
obj
- 对象。
public static <T> Mirror<T> me(java.lang.Class<T> classOfT, TypeExtractor typeExtractor)
classOfT
- typeExtractor
-
TypeExtractor
public static <T> Mirror<T> me(java.lang.reflect.Type type)
ParameterizedType
类型的对象
public Mirror<T> setTypeExtractor(TypeExtractor typeExtractor)
typeExtractor
-
TypeExtractor
public java.lang.reflect.Method getGetter(java.lang.String fieldName) throws java.lang.NoSuchMethodException
比如,你想获取 abc 的 getter ,那么优先查找 getAbc(),如果没有则查找isAbc(),最后才是查找 abc()。
fieldName
-
java.lang.NoSuchMethodException
- 没有找到 Getterpublic java.lang.reflect.Method getGetter(java.lang.reflect.Field field) throws java.lang.NoSuchMethodException
比如,你想获取 abc 的 getter ,那么优先查找 getAbc(),如果 没有,则查找 abc()。
field
-
java.lang.NoSuchMethodException
- 没有找到 Getterpublic static void evalGetterSetter(java.lang.reflect.Method method, Callback3<java.lang.String,java.lang.reflect.Method,java.lang.reflect.Method> callback, Callback<java.lang.reflect.Method> whenError)
对于回调会接受三个参数
callback(虚字段名, getter, setter)回调都会给一个参数,表示这个方法对应的虚拟字段名。所谓"虚拟字段",就比如
method
- 方法对象callback
- 回调, 如果为 null,则无视whenError
- 如果本方法即不是 Getter 也不是 Setter 的回调, 如果为 null,则无视public static void evalGetterSetter(java.lang.reflect.Method method, java.lang.String errmsgFormat, Callback3<java.lang.String,java.lang.reflect.Method,java.lang.reflect.Method> callback)
method
- 方法对象errmsgFormat
- 如果本方法即不是 Getter 也不是 Setter 的回调, 则根据这个消息模板抛出一个运行时异常。 这个字符串格式是个
Java 的字符串模板,接受两个参数,第一个是方法名,第二个是所在类名callback
- 回调, 如果为 null,则无视public java.lang.reflect.Method getSetter(java.lang.reflect.Field field) throws java.lang.NoSuchMethodException
比如,你想获取 abc 的 setter ,那么优先查找 setAbc(T abc),如果 没有,则查找 abc(T abc)。
field
- 字段
java.lang.NoSuchMethodException
- 没找到 Setterpublic java.lang.reflect.Method getSetter(java.lang.String fieldName, java.lang.Class<?> paramType) throws java.lang.NoSuchMethodException
fieldName
- 字段名paramType
- 字段类型
java.lang.NoSuchMethodException
- 没找到 Setterpublic java.lang.reflect.Method[] findSetters(java.lang.String fieldName)
fieldName
-
public java.lang.reflect.Field getField(java.lang.String name) throws java.lang.NoSuchFieldException
name
- 字段名
java.lang.NoSuchFieldException
public <AT extends java.lang.annotation.Annotation> java.lang.reflect.Field getField(java.lang.Class<AT> ann) throws java.lang.NoSuchFieldException
ann
- 注解
java.lang.NoSuchFieldException
public <AT extends java.lang.annotation.Annotation> java.lang.reflect.Field[] getFields(java.lang.Class<AT> ann)
ann
- 注解类型
public java.lang.reflect.Field[] getFields()
public java.lang.reflect.Field[] getStaticField(boolean noFinal)
noFinal
- 是否包括 final 修饰符的字段
public <A extends java.lang.annotation.Annotation> A getAnnotation(java.lang.Class<A> annType)
A
- 注解类型参数annType
- 注解类型
public java.lang.reflect.Type[] getGenericsTypes()
public java.lang.reflect.Type getGenericsType(int index)
public java.lang.reflect.Method[] getMethods()
public java.lang.reflect.Method[] getAllDeclaredMethods(java.lang.Class<?> top)
并且这个按照名称,消除重复的方法。子类方法优先
top
- 截至的父类
public java.lang.reflect.Method[] getAllDeclaredMethodsWithoutTop()
public java.lang.reflect.Method[] getStaticMethods()
public void setValue(java.lang.Object obj, java.lang.reflect.Field field, java.lang.Object value) throws FailToSetValueException
obj
- 对象field
- 字段value
- 值。如果为 null,字符和数字字段,都会设成 0
FailToSetValueException
public void setValue(java.lang.Object obj, java.lang.String fieldName, java.lang.Object value) throws FailToSetValueException
obj
- 对象fieldName
- 字段名value
- 值
FailToSetValueException
public java.lang.Object getValue(java.lang.Object obj, java.lang.reflect.Field f) throws FailToGetValueException
obj
- 对象f
- 字段
FailToGetValueException
public java.lang.Object getValue(java.lang.Object obj, java.lang.String name) throws FailToGetValueException
obj
- 对象name
- 字段名
FailToGetValueException
- 既没发现 getter,又没有字段public java.lang.Class<T> getType()
public java.lang.Class<?>[] extractTypes()
public java.lang.Class<?> getWrapperClass()
java.lang.RuntimeException
- 如果当前类型不是原生类型,则抛出public java.lang.Class<?> getWrapper()
public java.lang.Class<?> getOuterClass()
public Borning<T> getBorning(java.lang.Object... args) throws BorningException
args
- 构造函数参数
BorningException
- 当没有发现合适的 Borning 时抛出Borning
public Borning<T> getBorningByArgTypes(java.lang.Class<?>... argTypes) throws BorningException
argTypes
- 构造函数参数类型数组
BorningException
- 当没有发现合适的 Borning 时抛出public T born(java.lang.Object... args)
args
- 构造函数参数
public Invoking getInvoking(java.lang.String methodName, java.lang.Object... args)
methodName
- 函数名args
- 参数
public Injecting getInjecting(java.lang.String fieldName)
fieldName
- 字段名
public Ejecting getEjecting(java.lang.String fieldName)
fieldName
- 字段名
public java.lang.Object invoke(java.lang.Object obj, java.lang.String methodName, java.lang.Object... args)
obj
- 对象methodName
- 方法名args
- 参数
public java.lang.reflect.Method findMethod(java.lang.String name, java.lang.Class<?>... paramTypes) throws java.lang.NoSuchMethodException
name
- 方法名paramTypes
- 参数类型列表
java.lang.NoSuchMethodException
public java.lang.reflect.Method[] findMethods(java.lang.String name, int argNumber)
name
- 方法名argNumber
- 参数个数
public java.lang.reflect.Method findMethod(java.lang.Class<?> returnType, java.lang.Class<?>... paramTypes) throws java.lang.NoSuchMethodException
returnType
- 返回值类型paramTypes
- 参数个数
java.lang.NoSuchMethodException
public static MatchType matchParamTypes(java.lang.Class<?>[] methodParamTypes, java.lang.Object... args)
methodParamTypes
- 参数类型列表args
- 参数
MatchType
public static java.lang.Class<?>[] evalToTypes(java.lang.Object... args)
args
- 对象数组
public static java.lang.Object evalArgToSameTypeRealArray(java.lang.Object... args)
public static java.lang.Object evalArgToRealArray(java.lang.Object... args)
args
- 数组
public static MatchType matchParamTypes(java.lang.Class<?>[] paramTypes, java.lang.Class<?>[] argTypes)
paramTypes
- 函数声明参数数组argTypes
- 调用参数数组
MatchType
public boolean is(java.lang.Class<?> type)
type
- 类型
public boolean is(java.lang.String className)
className
- 类型名称
public boolean isOf(java.lang.Class<?> type)
type
- 类型或接口名
public boolean isString()
public boolean isStringLike()
public boolean isChar()
public boolean isEnum()
public boolean isBoolean()
public boolean isFloat()
public boolean isDouble()
public boolean isInt()
public boolean isIntLike()
public boolean isInterface()
public boolean isDecimal()
public boolean isLong()
public boolean isShort()
public boolean isByte()
public boolean isWrapperOf(java.lang.Class<?> type)
type
- 类型
public boolean canCastToDirectly(java.lang.Class<?> type)
type
- 目标类型
public boolean isPrimitiveNumber()
public boolean isObj()
public boolean isPojo()
public boolean isContainer()
public boolean isArray()
public boolean isCollection()
public boolean isColl()
public boolean isMap()
public boolean isNumber()
public boolean isDateTimeLike()
public java.lang.String toString()
java.lang.Object
中的 toString
public static java.lang.Object[] blankArrayArg(java.lang.Class<?>[] pts)
pts
- 函数参数类型列表
public static java.lang.reflect.Type[] getTypeParams(java.lang.Class<?> klass)
public static java.lang.Class<?>[] getGenericTypes(java.lang.reflect.Field f)
f
- 字段
public static java.lang.Class<?> getGenericTypes(java.lang.reflect.Field f, int index)
f
- 字段
public static <T> java.lang.Class<T> getTypeParam(java.lang.Class<?> klass, int index)
klass
- 类index
- 参数下标 (从 0 开始)
public static java.lang.String getPath(java.lang.Class<?> klass)
klass
- 类型
public static java.lang.String getParamDescriptor(java.lang.Class<?>[] parameterTypes)
parameterTypes
- 函数的参数类型数组
public static java.lang.String getMethodDescriptor(java.lang.reflect.Method method)
method
- 方法
public static java.lang.String getConstructorDescriptor(java.lang.reflect.Constructor<?> c)
c
- 构造函数
public static java.lang.String getTypeDescriptor(java.lang.Class<?> klass)
klass
- 类型
public static java.lang.reflect.Field findField(java.lang.Class<?> type, java.lang.Class<? extends java.lang.annotation.Annotation> ann)
type
- 类型ann
- 注解类型
public java.lang.Class<?> unWrapper()
|
|||||||||
上一个类 下一个类 | 框架 无框架 | ||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |