org.nutz.lang
类 Mirror<T>

java.lang.Object
  继承者 org.nutz.lang.Mirror<T>
类型参数:
T -

public class Mirror<T>
extends java.lang.Object

包裹了 Class, 提供了更多的反射方法

作者:
zozoh(zozohtnt@gmail.com)

方法摘要
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)
<A extends java.lang.annotation.Annotation>
A
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)
          根据字段名获得一个字段输入方式。
<AT extends java.lang.annotation.Annotation>
java.lang.reflect.Field
getField(java.lang.Class<AT> ann)
          获取一个字段。
 java.lang.reflect.Field getField(java.lang.String name)
          获取一个字段。
 java.lang.reflect.Field[] getFields()
          获得当前类以及所有父类的所有的属性,包括私有属性。
<AT extends java.lang.annotation.Annotation>
java.lang.reflect.Field[]
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
<T> java.lang.Class<T>
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
<T> Mirror<T>
me(java.lang.Class<T> classOfT)
          包裹一个类
static
<T> Mirror<T>
me(java.lang.Class<T> classOfT, TypeExtractor typeExtractor)
          包裹一个类,并设置自定义的类型提炼逻辑
static
<T> Mirror<T>
me(T obj)
          生成一个对象的 Mirror
static
<T> Mirror<T>
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
 

方法详细信息

me

public static <T> Mirror<T> me(java.lang.Class<T> classOfT)
包裹一个类

参数:
classOfT - 类
返回:
Mirror

me

public static <T> Mirror<T> me(T obj)
生成一个对象的 Mirror

参数:
obj - 对象。
返回:
Mirror, 如果 对象 null,则返回 null

me

public static <T> Mirror<T> me(java.lang.Class<T> classOfT,
                               TypeExtractor typeExtractor)
包裹一个类,并设置自定义的类型提炼逻辑

参数:
classOfT -
typeExtractor -
返回:
Mirror
另请参见:
TypeExtractor

me

public static <T> Mirror<T> me(java.lang.reflect.Type type)
根据Type生成Mirror, 如果type是 ParameterizedType 类型的对象
可以使用 getGenericsTypes() 方法取得它的泛型数组


setTypeExtractor

public Mirror<T> setTypeExtractor(TypeExtractor typeExtractor)
设置自己的类型提炼逻辑

参数:
typeExtractor -
返回:
Mirror
另请参见:
TypeExtractor

getGetter

public java.lang.reflect.Method getGetter(java.lang.String fieldName)
                                   throws java.lang.NoSuchMethodException
根据名称获取一个 Getter。

比如,你想获取 abc 的 getter ,那么优先查找 getAbc(),如果没有则查找isAbc(),最后才是查找 abc()。

参数:
fieldName -
返回:
方法
抛出:
java.lang.NoSuchMethodException - 没有找到 Getter

getGetter

public java.lang.reflect.Method getGetter(java.lang.reflect.Field field)
                                   throws java.lang.NoSuchMethodException
根据字段获取一个 Getter。

比如,你想获取 abc 的 getter ,那么优先查找 getAbc(),如果 没有,则查找 abc()。

参数:
field -
返回:
方法
抛出:
java.lang.NoSuchMethodException - 没有找到 Getter

evalGetterSetter

public 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)
 
回调都会给一个参数,表示这个方法对应的虚拟字段名。所谓"虚拟字段",就比如 而 getter 或者 setter 参数如果为 null,则表示本函数未发现对应的 getter|setter

参数:
method - 方法对象
callback - 回调, 如果为 null,则无视
whenError - 如果本方法即不是 Getter 也不是 Setter 的回调, 如果为 null,则无视

evalGetterSetter

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)
根据给定的一个方法,判断其是 Getter 还是 Setter,根据情况不同,调用不同的回调。

参数:
method - 方法对象
errmsgFormat - 如果本方法即不是 Getter 也不是 Setter 的回调, 则根据这个消息模板抛出一个运行时异常。 这个字符串格式是个 Java 的字符串模板,接受两个参数,第一个是方法名,第二个是所在类名
callback - 回调, 如果为 null,则无视

getSetter

public java.lang.reflect.Method getSetter(java.lang.reflect.Field field)
                                   throws java.lang.NoSuchMethodException
根据一个字段获取 Setter

比如,你想获取 abc 的 setter ,那么优先查找 setAbc(T abc),如果 没有,则查找 abc(T abc)。

参数:
field - 字段
返回:
方法
抛出:
java.lang.NoSuchMethodException - 没找到 Setter

getSetter

public java.lang.reflect.Method getSetter(java.lang.String fieldName,
                                          java.lang.Class<?> paramType)
                                   throws java.lang.NoSuchMethodException
根据一个字段名和字段类型获取 Setter

参数:
fieldName - 字段名
paramType - 字段类型
返回:
方法
抛出:
java.lang.NoSuchMethodException - 没找到 Setter

findSetters

public java.lang.reflect.Method[] findSetters(java.lang.String fieldName)
根据一个字段名,获取一组有可能成为 Setter 函数

参数:
fieldName -
返回:
函数数组

getField

public java.lang.reflect.Field getField(java.lang.String name)
                                 throws java.lang.NoSuchFieldException
获取一个字段。这个字段可以是当前类型或者其父类的私有字段。

参数:
name - 字段名
返回:
字段
抛出:
java.lang.NoSuchFieldException

getField

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

getFields

public <AT extends java.lang.annotation.Annotation> java.lang.reflect.Field[] getFields(java.lang.Class<AT> ann)
获取一组声明了特殊注解的字段

参数:
ann - 注解类型
返回:
字段数组

getFields

public java.lang.reflect.Field[] getFields()
获得当前类以及所有父类的所有的属性,包括私有属性。
但是父类不包括 Object 类,并且,如果子类的属性如果与父类重名,将会将其覆盖

返回:
属性列表

getStaticField

public java.lang.reflect.Field[] getStaticField(boolean noFinal)
获得所有的静态变量属性

参数:
noFinal - 是否包括 final 修饰符的字段
返回:
字段列表

getAnnotation

public <A extends java.lang.annotation.Annotation> A getAnnotation(java.lang.Class<A> annType)
向父类递归查找某一个运行时注解

类型参数:
A - 注解类型参数
参数:
annType - 注解类型
返回:
注解

getGenericsTypes

public java.lang.reflect.Type[] getGenericsTypes()
取得当前类型的泛型数组


getGenericsType

public java.lang.reflect.Type getGenericsType(int index)
取得当前类型的指定泛型


getMethods

public java.lang.reflect.Method[] getMethods()
获取本类型所有的方法,包括私有方法。不包括 Object 的方法


getAllDeclaredMethods

public java.lang.reflect.Method[] getAllDeclaredMethods(java.lang.Class<?> top)
获取当前对象,所有的方法,包括私有方法。递归查找至自己某一个父类为止 。

并且这个按照名称,消除重复的方法。子类方法优先

参数:
top - 截至的父类
返回:
方法数组

getAllDeclaredMethodsWithoutTop

public java.lang.reflect.Method[] getAllDeclaredMethodsWithoutTop()
相当于 getAllDeclaredMethods(Object.class)

返回:
方法数组

getStaticMethods

public java.lang.reflect.Method[] getStaticMethods()
返回:
所有静态方法

setValue

public void setValue(java.lang.Object obj,
                     java.lang.reflect.Field field,
                     java.lang.Object value)
              throws FailToSetValueException
为对象的一个字段设值。 优先调用对象的 setter,如果没有,直接设置字段的值

参数:
obj - 对象
field - 字段
value - 值。如果为 null,字符和数字字段,都会设成 0
抛出:
FailToSetValueException

setValue

public void setValue(java.lang.Object obj,
                     java.lang.String fieldName,
                     java.lang.Object value)
              throws FailToSetValueException
为对象的一个字段设值。优先调用 setter 方法。

参数:
obj - 对象
fieldName - 字段名
value - 值
抛出:
FailToSetValueException

getValue

public java.lang.Object getValue(java.lang.Object obj,
                                 java.lang.reflect.Field f)
                          throws FailToGetValueException
不调用 getter,直接获得字段的值

参数:
obj - 对象
f - 字段
返回:
字段的值。
抛出:
FailToGetValueException

getValue

public java.lang.Object getValue(java.lang.Object obj,
                                 java.lang.String name)
                          throws FailToGetValueException
优先通过 getter 获取字段值,如果没有,则直接获取字段值

参数:
obj - 对象
name - 字段名
返回:
字段值
抛出:
FailToGetValueException - 既没发现 getter,又没有字段

getType

public java.lang.Class<T> getType()
返回:
对象类型

extractTypes

public java.lang.Class<?>[] extractTypes()
返回:
对象提炼类型数组。从对象自身的类型到 Object,中间的继承关系中最有特点的几个类型

getWrapperClass

public java.lang.Class<?> getWrapperClass()
返回:
获得外覆类
抛出:
java.lang.RuntimeException - 如果当前类型不是原生类型,则抛出

getWrapper

public java.lang.Class<?> getWrapper()
返回:
获得外覆类,如果没有外覆类,则返回自身的类型

getOuterClass

public java.lang.Class<?> getOuterClass()
返回:
如果当前类为内部类,则返回其外部类。否则返回 null

getBorning

public Borning<T> getBorning(java.lang.Object... args)
                      throws BorningException
获取对象构建器

参数:
args - 构造函数参数
返回:
当前对象的构建方式。
抛出:
BorningException - 当没有发现合适的 Borning 时抛出
另请参见:
Borning

getBorningByArgTypes

public Borning<T> getBorningByArgTypes(java.lang.Class<?>... argTypes)
                                throws BorningException
获取对象构建器

参数:
argTypes - 构造函数参数类型数组
返回:
当前对象构建方式
抛出:
BorningException - 当没有发现合适的 Borning 时抛出

born

public T born(java.lang.Object... args)
根据构造函数参数,创建一个对象。

参数:
args - 构造函数参数
返回:
新对象

getInvoking

public Invoking getInvoking(java.lang.String methodName,
                            java.lang.Object... args)
根据函数名称和参数,返回一个函数调用方式

参数:
methodName - 函数名
args - 参数
返回:
函数调用方式

getInjecting

public Injecting getInjecting(java.lang.String fieldName)
根据字段名,得出一个字段注入方式。优先用 Setter

参数:
fieldName - 字段名
返回:
注入方式。

getEjecting

public Ejecting getEjecting(java.lang.String fieldName)
根据字段名获得一个字段输入方式。优先用 Getter

参数:
fieldName - 字段名
返回:
输出方式

invoke

public java.lang.Object invoke(java.lang.Object obj,
                               java.lang.String methodName,
                               java.lang.Object... args)
调用对象的一个方法

参数:
obj - 对象
methodName - 方法名
args - 参数
返回:
调用结果

findMethod

public java.lang.reflect.Method findMethod(java.lang.String name,
                                           java.lang.Class<?>... paramTypes)
                                    throws java.lang.NoSuchMethodException
查找一个方法。匹配的很宽泛

参数:
name - 方法名
paramTypes - 参数类型列表
返回:
方法
抛出:
java.lang.NoSuchMethodException

findMethods

public java.lang.reflect.Method[] findMethods(java.lang.String name,
                                              int argNumber)
根据名称和参数个数,查找一组方法

参数:
name - 方法名
argNumber - 参数个数
返回:
方法数组

findMethod

public java.lang.reflect.Method findMethod(java.lang.Class<?> returnType,
                                           java.lang.Class<?>... paramTypes)
                                    throws java.lang.NoSuchMethodException
根据返回值类型,以及参数类型,查找第一个匹配的方法

参数:
returnType - 返回值类型
paramTypes - 参数个数
返回:
方法
抛出:
java.lang.NoSuchMethodException

matchParamTypes

public static MatchType matchParamTypes(java.lang.Class<?>[] methodParamTypes,
                                        java.lang.Object... args)
一个方法的参数类型同一个给定的参数数组是否可以匹配

参数:
methodParamTypes - 参数类型列表
args - 参数
返回:
匹配类型
另请参见:
MatchType

evalToTypes

public static java.lang.Class<?>[] evalToTypes(java.lang.Object... args)
将一组对象,变成一组类型

参数:
args - 对象数组
返回:
类型数组

evalArgToSameTypeRealArray

public static java.lang.Object evalArgToSameTypeRealArray(java.lang.Object... args)

evalArgToRealArray

public static java.lang.Object evalArgToRealArray(java.lang.Object... args)
将一个 Object[] 数组,变成一个真正的数组 T[]

参数:
args - 数组
返回:
新数组,如果数组中包括了 null,或者数组的类型不一致,则返回旧数组

matchParamTypes

public static MatchType matchParamTypes(java.lang.Class<?>[] paramTypes,
                                        java.lang.Class<?>[] argTypes)
匹配一个函数声明的参数类型数组和一个调用参数数组

参数:
paramTypes - 函数声明参数数组
argTypes - 调用参数数组
返回:
匹配类型
另请参见:
MatchType

is

public boolean is(java.lang.Class<?> type)
判断当前对象是否为一个类型。精确匹配,即使是父类和接口,也不相等

参数:
type - 类型
返回:
是否相等

is

public boolean is(java.lang.String className)
判断当前对象是否为一个类型。精确匹配,即使是父类和接口,也不相等

参数:
className - 类型名称
返回:
是否相等

isOf

public boolean isOf(java.lang.Class<?> type)
参数:
type - 类型或接口名
返回:
当前对象是否为一个类型的子类,或者一个接口的实现类

isString

public boolean isString()
返回:
当前对象是否为字符串

isStringLike

public boolean isStringLike()
返回:
当前对象是否为CharSequence的子类

isChar

public boolean isChar()
返回:
当前对象是否为字符

isEnum

public boolean isEnum()
返回:
当前对象是否为枚举

isBoolean

public boolean isBoolean()
返回:
当前对象是否为布尔

isFloat

public boolean isFloat()
返回:
当前对象是否为浮点

isDouble

public boolean isDouble()
返回:
当前对象是否为双精度浮点

isInt

public boolean isInt()
返回:
当前对象是否为整型

isIntLike

public boolean isIntLike()
返回:
当前对象是否为整数(包括 int, long, short, byte)

isInterface

public boolean isInterface()
返回:
当前类型是不是接口

isDecimal

public boolean isDecimal()
返回:
当前对象是否为小数 (float, dobule)

isLong

public boolean isLong()
返回:
当前对象是否为长整型

isShort

public boolean isShort()
返回:
当前对象是否为短整型

isByte

public boolean isByte()
返回:
当前对象是否为字节型

isWrapperOf

public boolean isWrapperOf(java.lang.Class<?> type)
参数:
type - 类型
返回:
否为一个对象的外覆类

canCastToDirectly

public boolean canCastToDirectly(java.lang.Class<?> type)
参数:
type - 目标类型
返回:
判断当前对象是否能直接转换到目标类型,而不产生异常

isPrimitiveNumber

public boolean isPrimitiveNumber()
返回:
当前对象是否为原生的数字类型 (即不包括 boolean 和 char)

isObj

public boolean isObj()
如果不是容器,也不是 POJO,那么它必然是个 Obj

返回:
true or false

isPojo

public boolean isPojo()
判断当前类型是否为POJO。 除了下面的类型,其他均为 POJO

返回:
true or false

isContainer

public boolean isContainer()
判断当前类型是否为容器,包括 Map,Collection, 以及数组

返回:
true of false

isArray

public boolean isArray()
判断当前类型是否为数组

返回:
true of false

isCollection

public boolean isCollection()
判断当前类型是否为 Collection

返回:
true of false

isColl

public boolean isColl()
返回:
当前类型是否是数组或者集合

isMap

public boolean isMap()
判断当前类型是否为 Map

返回:
true of false

isNumber

public boolean isNumber()
返回:
当前对象是否为数字

isDateTimeLike

public boolean isDateTimeLike()
返回:
当前对象是否在表示日期或时间

toString

public java.lang.String toString()
覆盖:
java.lang.Object 中的 toString

blankArrayArg

public static java.lang.Object[] blankArrayArg(java.lang.Class<?>[] pts)
根据函数参数类型数组的最后一个类型(一定是数组,表示变参),为最后一个变参生成一个空数组

参数:
pts - 函数参数类型列表
返回:
变参空数组

getTypeParams

public static java.lang.reflect.Type[] getTypeParams(java.lang.Class<?> klass)
获取一个类的泛型参数数组,如果这个类没有泛型参数,返回 null


getGenericTypes

public static java.lang.Class<?>[] getGenericTypes(java.lang.reflect.Field f)
获取一个字段的泛型参数数组,如果这个字段没有泛型,返回空数组

参数:
f - 字段
返回:
泛型参数数组

getGenericTypes

public static java.lang.Class<?> getGenericTypes(java.lang.reflect.Field f,
                                                 int index)
获取一个字段的某一个泛型参数,如果没有,返回 null

参数:
f - 字段
返回:
泛型参数数

getTypeParam

public static <T> java.lang.Class<T> getTypeParam(java.lang.Class<?> klass,
                                                  int index)
获取一个类的某个一个泛型参数

参数:
klass - 类
index - 参数下标 (从 0 开始)
返回:
泛型参数类型

getPath

public static java.lang.String getPath(java.lang.Class<?> klass)
参数:
klass - 类型
返回:
一个类型的包路径

getParamDescriptor

public static java.lang.String getParamDescriptor(java.lang.Class<?>[] parameterTypes)
参数:
parameterTypes - 函数的参数类型数组
返回:
参数的描述符

getMethodDescriptor

public static java.lang.String getMethodDescriptor(java.lang.reflect.Method method)
参数:
method - 方法
返回:
这个方法的描述符

getConstructorDescriptor

public static java.lang.String getConstructorDescriptor(java.lang.reflect.Constructor<?> c)
参数:
c - 构造函数
返回:
构造函数的描述符

getTypeDescriptor

public static java.lang.String getTypeDescriptor(java.lang.Class<?> klass)
参数:
klass - 类型
返回:
获得一个类型的描述符

findField

public static java.lang.reflect.Field findField(java.lang.Class<?> type,
                                                java.lang.Class<? extends java.lang.annotation.Annotation> ann)
查找包含某一个特殊注解的字段

参数:
type - 类型
ann - 注解类型
返回:
字段,null 表示没有找到

unWrapper

public java.lang.Class<?> unWrapper()