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 修改
更名为 obtainMethodmethod
新增 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 修改
更名为 obtainConstructorconstructor
v1.0.2 修改
合并到 ConstructorFinder 方法体
v1.0.80 修改
将方法体进行 inline
功能描述
查找并得到构造方法。
callStatic - method
变更记录
v1.0 添加
v1.0.1 修改
更名为 invokeStaticcallStatic
v1.0.2 移除
call - method
变更记录
v1.0 添加
v1.0.1 修改
更名为 invokeAnycall
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
功能描述
遍历当前类中的所有变量。