public class TReflect extends Object
Modifier and Type | Field and Description |
---|---|
static Constructor |
EMPTY_CONSTRUCTOR |
static Field |
EMPTY_FIELD |
static Method |
EMPTY_METHOD |
static Object |
SINGLE_VALUE_KEY |
Constructor and Description |
---|
TReflect() |
Modifier and Type | Method and Description |
---|---|
static <T> T |
allocateInstance(Class<T> clazz)
采用 Unsafe 构造一个对象,无须参数
|
static boolean |
classChecker(Class clazz,
Class[] filters)
类检查器
是否符合 filters 中的约束条件, 注解/类/接口等
|
static void |
clearRegister()
清理所有的已经注册的 native 调用类
|
static Map<String,Object> |
fieldFilter(Object obj,
String... fields)
过滤对象的属性, 产生一个 Map
未包含的属性的值将会以 null 返回
|
static Constructor |
findConstructor(Class<?> clazz,
Class<?>... paramTypes)
查找类中的构造方法
|
static Constructor[] |
findConstructor(Class<?> clazz,
int paramCount)
查找类中的构造方法(使用参数数量)
|
static Field |
findField(Class<?> clazz,
String fieldName)
查找类特定的Field
|
static Field |
findFieldIgnoreCase(Class<?> clazz,
String fieldName)
查找类特定的Field
不区分大小写,并且替换掉特殊字符
|
static Method |
findMethod(Class<?> clazz,
String name,
Class<?>... paramTypes)
查找类中的方法
|
static Method[] |
findMethod(Class<?> clazz,
String name,
int paramCount)
查找类中的方法(使用参数数量)
|
static DynamicFunction |
genMethodInvoker(Class clazz)
生成方法的原生调用代码
|
static List<Class> |
getAllSuperClass(Class<?> type)
获取类的继承树上的所有父类
|
static Class<?>[] |
getArrayClasses(Object[] objs)
将对象数组转换成,对象类型的数组
|
static Class |
getClassByName(String className)
根据类的完全限定名, 获取 Class
|
static String |
getClassName(Class clazz)
根据 Class 对象获取类的完全现定名
|
static String |
getClazzJSONModel(Class clazz)
获取类的 json 形式的描述
|
static int |
getConstructorParamTypeMark(Class<?> clazz,
Class<?>... paramTypes) |
static Constructor[] |
getConstructors(Class<?> clazz)
获取类的构造方法集合
|
static Class[] |
getFieldGenericType(Field field)
获取 Field 的范型类型
|
static Field[] |
getFields(Class<?> clazz)
获得类所有的Field
|
static <T> T |
getFieldValue(Object obj,
String fieldName)
获取类中指定Field的值
|
static <T> T |
getFieldValueNatvie(Object obj,
String fieldName)
通过原生调用的方式获取 Field 的值
|
static Map<Field,Object> |
getFieldValues(Object obj)
将对象中的field和其值组装成Map 静态字段(static修饰的)不包括
|
static Class[] |
getGenericClass(Object object)
获取对象的范型类型
|
static Class[] |
getGenericClass(Type type)
获取类型的范型类型
|
static GenericInfo[] |
getGenericInfo(GenericInfo genericInfo)
获取类型的范型类型信息
|
static GenericInfo[] |
getGenericInfo(Type type)
获取类型的范型类型信息
|
static Map<String,Object> |
getMapfromObject(Object obj)
将对象转换成 Map
key 对象属性名称
value 对象属性值
|
static Map<String,Object> |
getMapfromObject(Object obj,
boolean allField)
将对象转换成 Map
key 对象属性名称
value 对象属性值
|
static Class[] |
getMethodParameterGenericType(Method method,
int parameterIndex)
获取方法的参数返回值的范型类型
|
static Method[] |
getMethods(Class<?> clazz)
获取类的方法集合
|
static Method[] |
getMethods(Class<?> clazz,
String name)
获取类的特定方法的集合
类中可能存在同名方法
|
static <T> T |
getObjectFromMap(Type type,
Map<String,?> mapArg,
boolean ignoreCase)
将Map转换成指定的对象
|
static <T> T |
getObjectFromMap(Type type,
Map<String,?> mapArg,
Class[] genericType,
boolean ignoreCase)
将Map转换成指定的对象
|
static Class |
getPackageClass(Class clazz)
获得装箱类型
|
static String |
getPackageType(String type)
获得装箱类型
|
static Class |
getUnPackageClass(Class clazz)
获得拆箱类型
|
static String |
getUnPackageType(String type)
获得拆箱类型
|
static <T> T |
invokeMethod(Object obj,
Method method,
Object... parameters)
使用对象执行它的一个方法
对对象执行一个指定Method对象的方法
|
static <T> T |
invokeMethod(Object obj,
String methodName,
Object... args)
使用对象执行方法
推荐使用的方法,这个方法会自动寻找参数匹配度最好的方法并执行
对对象执行一个通过 方法名和参数列表选择的方法
|
static <T> T |
invokeMethodNative(Object obj,
String methodName,
Object... params)
通过原生调用一个方法
|
static boolean |
isBasicType(Class clazz)
判读是否是基本类型(null, boolean, byte, char, double, float, int, long, short, string)
|
static boolean |
isExtendsByClass(Class<?> type,
Class<?> extendsClass)
判断某个类型是否继承于某个类
包括判断其父类
|
static boolean |
isImpByInterface(Class<?> type,
Class<?> interfaceClass)
判断某个类型是否实现了某个接口
包括判断其父接口
|
static boolean |
isSystemType(Class clazz)
判读是否是 JDK 中定义的类(java包下的所有类)
|
static boolean |
isSystemType(String className)
判读是否是 JDK 中定义的类(java包下的所有类)
|
static boolean |
isTypeOfArray(Object object,
Type type)
判断对象是否是指定类型的数组
|
static <T> T |
newInstance(Class<T> clazz,
Object... args)
构造新的对象
通过参数中的构造参数对象parameters,选择特定的构造方法构造
|
static <T> T |
newInstance(String className,
Object... parameters)
构造新的对象
|
static <T> T |
newInstanceNative(Class clazz,
Object... params)
通过原生构造一个对象
|
static boolean |
register(Class clazz)
注册一个类, 尝试采用 native 方式进行反射调用
|
static void |
setFieldValue(Object obj,
Field field,
Object fieldValue)
更新对象中指定的Field的值
注意:对 private 等字段有效
|
static void |
setFieldValue(Object obj,
String fieldName,
Object fieldValue)
更新对象中指定的Field的值
注意:对 private 等字段有效
|
static Boolean |
setFieldValueNatvie(Object obj,
String fieldName,
Object value)
通过原生调用的方式设置 Field 的值
|
public static Constructor EMPTY_CONSTRUCTOR
public static Field EMPTY_FIELD
public static Method EMPTY_METHOD
public static final Object SINGLE_VALUE_KEY
public static boolean register(Class clazz)
clazz
- 类对象public static void clearRegister()
public static DynamicFunction genMethodInvoker(Class clazz)
clazz
- 根据这个对象的元信息生成静态调用代码public static <T> T getFieldValueNatvie(Object obj, String fieldName) throws ReflectiveOperationException
T
- field 的类型obj
- 对象fieldName
- field 名称ReflectiveOperationException
- 调用异常public static Boolean setFieldValueNatvie(Object obj, String fieldName, Object value) throws ReflectiveOperationException
obj
- 对象fieldName
- field 名称value
- Field 的值ReflectiveOperationException
- 反射异常public static <T> T newInstanceNative(Class clazz, Object... params) throws ReflectiveOperationException
T
- 构造的对象的范型clazz
- 对象params
- 构造方法参数ReflectiveOperationException
- 调用异常public static <T> T invokeMethodNative(Object obj, String methodName, Object... params) throws ReflectiveOperationException
T
- 方法返回值的范型obj
- 对象methodName
- 方法名params
- 方法参数ReflectiveOperationException
- 调用异常public static String getClassName(Class clazz)
clazz
- Class 对象public static Class getClassByName(String className) throws ClassNotFoundException
className
- 类的完全限定名ClassNotFoundException
- 类没有找到的异常public static Field[] getFields(Class<?> clazz)
clazz
- 类对象public static Field findField(Class<?> clazz, String fieldName)
clazz
- 类对象fieldName
- field 名称public static Field findFieldIgnoreCase(Class<?> clazz, String fieldName)
clazz
- 类对象fieldName
- Field 名称public static GenericInfo[] getGenericInfo(Type type)
type
- 类型对象public static GenericInfo[] getGenericInfo(GenericInfo genericInfo)
genericInfo
- GenericInfo 对象public static Class[] getGenericClass(Type type)
type
- 类型对象public static Class[] getGenericClass(Object object)
object
- 对象public static Class[] getFieldGenericType(Field field)
field
- field 对象public static <T> T getFieldValue(Object obj, String fieldName) throws ReflectiveOperationException
T
- 范型obj
- 对象fieldName
- Field 名称ReflectiveOperationException
- 反射异常public static void setFieldValue(Object obj, Field field, Object fieldValue) throws ReflectiveOperationException
obj
- 对象field
- field 对象fieldValue
- field 值ReflectiveOperationException
- 反射异常public static void setFieldValue(Object obj, String fieldName, Object fieldValue) throws ReflectiveOperationException
obj
- 对象fieldName
- field 名称fieldValue
- field 值ReflectiveOperationException
- 反射异常public static Map<Field,Object> getFieldValues(Object obj) throws ReflectiveOperationException
obj
- 对象ReflectiveOperationException
- 反射异常public static Method findMethod(Class<?> clazz, String name, Class<?>... paramTypes)
clazz
- 类对象name
- 方法名paramTypes
- 参数类型public static Method[] findMethod(Class<?> clazz, String name, int paramCount)
clazz
- 类对象name
- 方法名paramCount
- 参数数量public static Method[] getMethods(Class<?> clazz)
clazz
- 类对象public static Method[] getMethods(Class<?> clazz, String name)
clazz
- 类对象name
- 方法名public static Class[] getMethodParameterGenericType(Method method, int parameterIndex)
method
- method 对象parameterIndex
- 参数索引(大于0)参数索引位置[第一个参数为0,以此类推], (-1) 返回值public static <T> T invokeMethod(Object obj, Method method, Object... parameters) throws ReflectiveOperationException
T
- 范型obj
- 执行方法的对象method
- 方法对象parameters
- 多个参数ReflectiveOperationException
- 反射异常public static <T> T invokeMethod(Object obj, String methodName, Object... args) throws ReflectiveOperationException
T
- 范型obj
- 执行方法的对象,如果调用静态方法直接传 Class 类型的对象methodName
- 执行方法名args
- 方法参数ReflectiveOperationException
- 反射异常public static int getConstructorParamTypeMark(Class<?> clazz, Class<?>... paramTypes)
public static Constructor findConstructor(Class<?> clazz, Class<?>... paramTypes)
clazz
- 类对象paramTypes
- 参数类型public static Constructor[] findConstructor(Class<?> clazz, int paramCount)
clazz
- 类对象paramCount
- 参数数量public static Constructor[] getConstructors(Class<?> clazz)
clazz
- 类对象public static <T> T newInstance(Class<T> clazz, Object... args) throws ReflectiveOperationException
T
- 范型clazz
- 类对象args
- 构造方法参数ReflectiveOperationException
- 反射异常public static <T> T newInstance(String className, Object... parameters) throws ReflectiveOperationException
T
- 范型className
- 类名称parameters
- 构造方法参数ReflectiveOperationException
- 反射异常public static <T> T allocateInstance(Class<T> clazz) throws InstantiationException
T
- 范型clazz
- 对象类型InstantiationException
- 实例化异常public static Class<?>[] getArrayClasses(Object[] objs)
objs
- 对象类型数组public static <T> T getObjectFromMap(Type type, Map<String,?> mapArg, boolean ignoreCase) throws ParseException, ReflectiveOperationException
T
- 范型type
- 类对象mapArg
- Map 对象ignoreCase
- 匹配属性名是否不区分大小写ReflectiveOperationException
- 反射异常ParseException
- 解析异常public static <T> T getObjectFromMap(Type type, Map<String,?> mapArg, Class[] genericType, boolean ignoreCase) throws ReflectiveOperationException, ParseException
T
- 范型type
- 类对象mapArg
- Map 对象genericType
- 范型类型描述ignoreCase
- 匹配属性名是否不区分大小写ReflectiveOperationException
- 反射异常ParseException
- 解析异常public static Map<String,Object> getMapfromObject(Object obj) throws ReflectiveOperationException
obj
- 待转换的对象ReflectiveOperationException
- 反射异常public static Map<String,Object> getMapfromObject(Object obj, boolean allField) throws ReflectiveOperationException
obj
- 待转换的对象allField
- 是否序列化所有属性ReflectiveOperationException
- 反射异常public static boolean isImpByInterface(Class<?> type, Class<?> interfaceClass)
type
- 被判断的类型interfaceClass
- 检查是否实现了次类的接口public static boolean isExtendsByClass(Class<?> type, Class<?> extendsClass)
type
- 判断的类型extendsClass
- 用于判断的父类类型public static boolean classChecker(Class clazz, Class[] filters)
clazz
- Class 对象filters
- 过滤器public static List<Class> getAllSuperClass(Class<?> type)
type
- 类型 Classpublic static String getClazzJSONModel(Class clazz)
clazz
- Class 类型对象public static Map<String,Object> fieldFilter(Object obj, String... fields)
obj
- 对象fields
- 保留的属性public static boolean isBasicType(Class clazz)
clazz
- Class 对象public static boolean isTypeOfArray(Object object, Type type)
object
- 对象type
- 对象类型public static boolean isSystemType(Class clazz)
clazz
- Class 对象public static boolean isSystemType(String className)
className
- Class 对象完全限定名public static String getPackageType(String type)
type
- 原始类型public static String getUnPackageType(String type)
type
- 原始类型public static Class getPackageClass(Class clazz)
clazz
- 原始类型Copyright © 2020 Voovan. All rights reserved.