9.0 KiB
ReflectionFactory - kt
变更记录
v1.0
添加
功能描述
这是自定义
Member
和Class
相关功能的查找匹配以及invoke
的封装类。
MembersType - class
enum class MembersType
变更记录
v1.0.93
新增
功能描述
定义一个
Class
中的Member
类型
ALL - enum
ALL
变更记录
v1.0.93
新增
功能描述
全部
Method
与Constructor
。
METHOD - enum
METHOD
变更记录
v1.0.93
新增
功能描述
全部
Method
。
CONSTRUCTOR - enum
CONSTRUCTOR
变更记录
v1.0.93
新增
功能描述
全部
Constructor
。
hookClass - field
变更记录
v1.0
添加
v1.0.93
移除
HookClass
相关功能不再对外开放
normalClass - field
变更记录
v1.0
添加
v1.0.93
移除
HookClass
相关功能不再对外开放
hasClass - field
变更记录
v1.0
添加
v1.0.93
移除
请直接使用 hasClass()
无参方法
Class.hasExtends - ext-field
val Class<*>.hasExtends: Boolean
变更记录
v1.0.80
新增
功能描述
当前
Class
是否有继承关系,父类是Any
将被认为没有继承关系。
classOf - method
变更记录
v1.0
添加
v1.0.93
移除
请转到 toClass(...)
方法
String.toClass - ext-method
fun String.toClass(loader: ClassLoader?): Class<*>
变更记录
v1.0.93
新增
功能描述
通过字符串类名转换为
loader
中的实体类。
功能示例
你可以直接填写你要查找的目标 Class
,必须在默认 ClassLoader
下存在。
示例如下
"com.example.demo.DemoClass".toClass()
你还可以自定义 Class
所在的 ClassLoader
。
示例如下
val customClassLoader: ClassLoader? = ... // 假设这个就是你的 ClassLoader
"com.example.demo.DemoClass".toClass(customClassLoader)
classOf - method
inline fun <reified T> classOf(loader: ClassLoader?): Class<*>
变更记录
v1.0.93
新增
功能描述
通过
T
得到其Class
实例并转换为实体类。
功能示例
我们要获取一个 Class
在 Kotlin
下不通过反射时应该这样做。
示例如下
DemoClass::class.java
现在,你可以直接 cast
一个实例并获取它的 Class
对象,必须在当前 ClassLoader
下存在。
示例如下
classOf<DemoClass>()
若目标存在的 Class
为 stub
,通过这种方式,你还可以自定义 Class
所在的 ClassLoader
。
示例如下
val customClassLoader: ClassLoader? = ... // 假设这个就是你的 ClassLoader
classOf<DemoClass>(customClassLoader)
String.hasClass - ext-method
fun String.hasClass(loader: ClassLoader?): Boolean
变更记录
v1.0
添加
v1.0.93
修改
支持直接使用空参数方法使用默认 ClassLoader
进行判断
功能描述
通过字符串类名使用指定的
ClassLoader
查找是否存在。
功能示例
你可以轻松的使用此方法判断字符串中的类是否存在,效果等同于直接使用 Class.forName
。
示例如下
if("com.example.demo.DemoClass".hasClass()) {
// Your code here.
}
填入方法中的 loader
参数可判断指定的 ClassLoader
中的 Class
是否存在。
示例如下
val customClassLoader: ClassLoader? = ... // 假设这个就是你的 ClassLoader
if("com.example.demo.DemoClass".hasClass(customClassloader)) {
// Your code here.
}
Class.hasField - ext-method
inline fun Class<*>.hasField(initiate: FieldCondition): Boolean
变更记录
v1.0.4
新增
v1.0.67
修改
合并到 FieldFinder
v1.0.80
修改
将方法体进行 inline
功能描述
查找变量是否存在。
Class.hasMethod - ext-method
inline fun Class<*>.hasMethod(initiate: MethodConditions): Boolean
变更记录
v1.0
添加
v1.0.1
修改
新增 returnType
参数
v1.0.67
修改
合并到 MethodFinder
v1.0.80
修改
将方法体进行 inline
功能描述
查找方法是否存在。
Class.hasConstructor - ext-method
inline fun Class<*>.hasConstructor(initiate: ConstructorConditions): Boolean
变更记录
v1.0.2
新增
v1.0.67
修改
合并到 ConstructorFinder
v1.0.80
修改
将方法体进行 inline
功能描述
查找构造方法是否存在。
Member.hasModifiers - ext-method
inline fun Member.hasModifiers(initiate: ModifierRules.() -> Unit): Boolean
变更记录
v1.0.67
新增
v1.0.80
修改
将方法体进行 inline
功能描述
查询
Member
中匹配的描述符。
Class.hasModifiers - ext-method
inline fun Class<*>.hasModifiers(initiate: ModifierRules.() -> Unit): Boolean
变更记录
v1.0.93
新增
功能描述
查询
Class
中匹配的描述符。
obtainStaticFieldAny - method
变更记录
v1.0
添加
v1.0.1
移除
obtainFieldAny - method
变更记录
v1.0
添加
v1.0.1
移除
modifyStaticField - method
变更记录
v1.0
添加
v1.0.1
移除
modifyField - method
变更记录
v1.0
添加
v1.0.1
移除
Class.field - ext-method
inline fun Class<*>.field(initiate: FieldConditions): FieldFinder.Result
变更记录
v1.0.2
新增
v1.0.80
修改
将方法体进行 inline
功能描述
查找并得到变量。
Class.method - ext-method
inline fun Class<*>.method(initiate: MethodConditions): MethodFinder.Result
变更记录
v1.0
添加
v1.0.1
修改
更名为 obtainMethod
method
新增 returnType
参数
v1.0.2
修改
合并到 MethodFinder
方法体
v1.0.80
修改
将方法体进行 inline
功能描述
查找并得到方法。
Class.constructor - ext-method
inline fun Class<*>.constructor(initiate: ConstructorConditions): ConstructorFinder.Result
变更记录
v1.0
添加
v1.0.1
修改
更名为 obtainConstructor
constructor
v1.0.2
修改
合并到 ConstructorFinder
方法体
v1.0.80
修改
将方法体进行 inline
功能描述
查找并得到构造方法。
callStatic - method
变更记录
v1.0
添加
v1.0.1
修改
更名为 invokeStatic
callStatic
v1.0.2
移除
call - method
变更记录
v1.0
添加
v1.0.1
修改
更名为 invokeAny
call
v1.0.2
移除
Any.current - ext-method
inline fun <reified T : Any> T.current(ignored: Boolean): CurrentClass
inline fun <reified T : Any> T.current(ignored: Boolean, initiate: CurrentClass.() -> Unit): T
变更记录
v1.0.70
新增
v1.0.93
新增
新增 ignored
参数,可以忽略在 CurrentClass
中出现的异常
新增不使用 current { ... }
调用域直接使用 current()
得到实例的类操作对象
功能描述
获得当前实例的类操作对象。
Class.buildOfAny - ext-method
变更记录
v1.0.70
新增
v1.0.80
修改
将方法体进行 inline
v1.0.93
作废
请转移到 buildOf
方法
Class.buildOf - ext-method
inline fun Class<*>.buildOf(vararg param: Any?, initiate: ConstructorConditions): Any?
inline fun <T> Class<*>.buildOf(vararg param: Any?, initiate: ConstructorConditions): T?
变更记录
v1.0.70
新增
v1.0.80
修改
将方法体进行 inline
v1.0.93
修改
加入无泛型方法 buildOf
功能描述
通过构造方法创建新实例,指定类型
T
或任意类型Any
。
Class.allMethods - ext-method
inline fun Class<*>.allMethods(result: (index: Int, method: Method) -> Unit)
变更记录
v1.0.70
新增
v1.0.80
修改
将方法体进行 inline
功能描述
遍历当前类中的所有方法。
Class.allConstructors - ext-method
inline fun Class<*>.allConstructors(result: (index: Int, constructor: Constructor<*>) -> Unit)
变更记录
v1.0.70
新增
v1.0.80
修改
将方法体进行 inline
功能描述
遍历当前类中的所有构造方法。
Class.allFields - ext-method
inline fun Class<*>.allFields(result: (index: Int, field: Field) -> Unit)
变更记录
v1.0.70
新增
v1.0.80
修改
将方法体进行 inline
功能描述
遍历当前类中的所有变量。