Package-level declarations

Types

Link copied to clipboard
value class Args(val args: Array<out Any?>)

方法参数值包装。

Link copied to clipboard
value class ArgTypes(val types: Array<out Class<*>>)

方法参数类型包装。

Link copied to clipboard
class ClassNotFoundError(val className: String, val classLoaderInfo: String, val triedNames: List<String> = listOf(className), cause: Throwable? = null) : RuntimeException

类加载失败时的异常。

Link copied to clipboard

构造器查找条件。以 Constructor 为 receiver。

Link copied to clipboard
interface EzLogger

日志接口。

Link copied to clipboard
object EzReflect

EzHookTool 反射核心初始化入口。

Link copied to clipboard

标记 EzReflect DSL 作用域,避免不同 DSL receiver 混用。

Link copied to clipboard
typealias FieldCondition = Field.() -> Boolean

字段查找条件。以 Field 为 receiver。

Link copied to clipboard
typealias JBoolean = Boolean

Java 包装类型别名。

Link copied to clipboard
typealias JByte = Byte
Link copied to clipboard
typealias JChar = Character
Link copied to clipboard
typealias JDouble = Double
Link copied to clipboard
typealias JFloat = Float
Link copied to clipboard
typealias JInteger = Integer
Link copied to clipboard
typealias JLong = Long
Link copied to clipboard
typealias JShort = Short
Link copied to clipboard
typealias JString = String
Link copied to clipboard
typealias JVoid = Void
Link copied to clipboard
class MemberNotFoundException(val memberType: MemberType, val targetClass: String, val searchedSuper: Boolean, val conditionDesc: String? = null, val candidates: List<String> = emptyList(), cause: Throwable? = null) : RuntimeException

反射成员查找失败时的异常。 包含结构化的搜索上下文,输出格式清晰可读。

Link copied to clipboard
interface MemberResolver

成员枚举策略。

Link copied to clipboard

成员类型枚举,用于错误信息。

Link copied to clipboard
typealias MethodCondition = Method.() -> Boolean

方法查找条件。以 Method 为 receiver,可直接访问 name、parameterTypes 等。

Link copied to clipboard

绑定指定 classLoader 的反射 DSL 作用域。

Link copied to clipboard

绑定类或实例的链式解析会话。

Properties

Link copied to clipboard
Link copied to clipboard
Link copied to clipboard

当前成员是否为 abstract。

Link copied to clipboard

当前类是否为 abstract。

Link copied to clipboard

Bridge flag (0x00000040).

Link copied to clipboard

当前类是否为枚举。

Link copied to clipboard

当前成员是否为 final。

Link copied to clipboard

当前类是否为 final。

Link copied to clipboard

当前类是否为接口。

Link copied to clipboard

当前成员是否为 native。

Link copied to clipboard

当前成员是否不是 abstract。

Link copied to clipboard

当前成员是否不是 bridge。

Link copied to clipboard

当前成员是否不是 final。

Link copied to clipboard

当前成员是否不是 native。

Link copied to clipboard

当前成员是否不是 private。

Link copied to clipboard

当前成员是否不是 protected。

Link copied to clipboard

当前成员是否不是 public。

Link copied to clipboard

当前成员是否不是 static。

Link copied to clipboard

当前成员是否不是 synchronized。

Link copied to clipboard

当前成员是否不是 synthetic。

Link copied to clipboard

当前成员是否不是 transient。

Link copied to clipboard

当前成员是否不是 volatile。

Link copied to clipboard

当前成员是否为 private。

Link copied to clipboard

当前成员是否为 protected。

Link copied to clipboard

当前成员是否为 public。

Link copied to clipboard

当前成员是否为 static。

Link copied to clipboard

当前类是否为 static 嵌套类。

Link copied to clipboard

当前成员是否为 synchronized。

Link copied to clipboard

Synthetic flag (0x00001000).

Link copied to clipboard

当前成员是否为 transient。

Link copied to clipboard

当前成员是否为 volatile。

Link copied to clipboard

参数个数。

Functions

Link copied to clipboard
fun args(vararg args: Any?): Args

创建 Args: args("hello", 42)

Link copied to clipboard
fun argTypes(vararg types: Class<*>): ArgTypes

创建 ArgTypes: argTypes(String::class.java, Int::class.java)

Link copied to clipboard
fun Any.callMethod(methodName: String, vararg args: Any?): Any?

自动匹配参数并调用实例方法。

Link copied to clipboard
fun Class<*>.callStaticMethod(methodName: String, vararg args: Any?): Any?

自动匹配参数并调用静态方法。

Link copied to clipboard
fun Any.field(fieldName: String, isStatic: Boolean = false, fieldType: Class<*>? = null): Field

按名称获取实例/静态字段。

Link copied to clipboard
fun fieldCpy(src: Any, dst: Any, findSuper: Boolean = true)

浅拷贝字段值:将 src 的所有字段值复制到 dst

Link copied to clipboard
fun Any.fieldOrNull(fieldName: String, isStatic: Boolean = false, fieldType: Class<*>? = null): Field?

按名称获取字段,找不到返回 null。

Link copied to clipboard

查找全部构造器。

按查询条件查找构造器。

fun findAllConstructors(className: String, classLoader: ClassLoader = EzReflect.classLoader): List<Constructor<*>>

按类名查找全部构造器。

fun findAllConstructors(className: String, classLoader: ClassLoader = EzReflect.classLoader, query: ConstructorQuery.() -> Unit): List<Constructor<*>>

按类名和查询条件查找构造器。

Link copied to clipboard
@JvmName(name = "findAllConstructorsFromClass")
fun Class<*>.findAllConstructors(): List<Constructor<*>>

从 Class 对象查找全部构造器。

@JvmName(name = "findAllConstructorsFromClassWithQuery")
fun Class<*>.findAllConstructors(query: ConstructorQuery.() -> Unit): List<Constructor<*>>

从 Class 对象按查询条件查找构造器。

@JvmName(name = "findAllConstructorsFromString")
fun String.findAllConstructors(classLoader: ClassLoader = EzReflect.classLoader): List<Constructor<*>>

从类名查找全部构造器。

@JvmName(name = "findAllConstructorsFromStringWithQuery")
fun String.findAllConstructors(classLoader: ClassLoader = EzReflect.classLoader, query: ConstructorQuery.() -> Unit): List<Constructor<*>>

从类名按查询条件查找构造器。

Link copied to clipboard
fun findAllFields(clz: Class<*>, findSuper: Boolean? = null): List<Field>

查找全部字段。

fun findAllFields(clz: Class<*>, findSuper: Boolean? = null, query: FieldQuery.() -> Unit): List<Field>

按查询条件查找字段。

fun findAllFields(className: String, classLoader: ClassLoader = EzReflect.classLoader, findSuper: Boolean? = null): List<Field>

按类名查找全部字段。

fun findAllFields(className: String, classLoader: ClassLoader = EzReflect.classLoader, findSuper: Boolean? = null, query: FieldQuery.() -> Unit): List<Field>

按类名和查询条件查找字段。

Link copied to clipboard
@JvmName(name = "findAllFieldsFromClass")
fun Class<*>.findAllFields(findSuper: Boolean? = null): List<Field>

从 Class 对象查找全部字段。

@JvmName(name = "findAllFieldsFromClassWithQuery")
fun Class<*>.findAllFields(findSuper: Boolean? = null, query: FieldQuery.() -> Unit): List<Field>

从 Class 对象按查询条件查找字段。

@JvmName(name = "findAllFieldsFromString")
fun String.findAllFields(classLoader: ClassLoader = EzReflect.classLoader, findSuper: Boolean? = null): List<Field>

从类名查找全部字段。

@JvmName(name = "findAllFieldsFromStringWithQuery")
fun String.findAllFields(classLoader: ClassLoader = EzReflect.classLoader, findSuper: Boolean? = null, query: FieldQuery.() -> Unit): List<Field>

从类名按查询条件查找字段。

Link copied to clipboard
fun findAllMethods(clz: Class<*>, findSuper: Boolean? = null): List<Method>

查找全部方法。

fun findAllMethods(clz: Class<*>, findSuper: Boolean? = null, query: MethodQuery.() -> Unit): List<Method>

按查询条件查找方法。

fun findAllMethods(className: String, classLoader: ClassLoader = EzReflect.classLoader, findSuper: Boolean? = null): List<Method>

按类名查找全部方法。

fun findAllMethods(className: String, classLoader: ClassLoader = EzReflect.classLoader, findSuper: Boolean? = null, query: MethodQuery.() -> Unit): List<Method>

按类名和查询条件查找方法。

Link copied to clipboard
@JvmName(name = "findAllMethodsFromClass")
fun Class<*>.findAllMethods(findSuper: Boolean? = null): List<Method>

从 Class 对象查找全部方法。

@JvmName(name = "findAllMethodsFromClassWithQuery")
fun Class<*>.findAllMethods(findSuper: Boolean? = null, query: MethodQuery.() -> Unit): List<Method>

从 Class 对象按查询条件查找方法。

@JvmName(name = "findAllMethodsFromString")
fun String.findAllMethods(classLoader: ClassLoader = EzReflect.classLoader, findSuper: Boolean? = null): List<Method>

从类名查找全部方法。

@JvmName(name = "findAllMethodsFromStringWithQuery")
fun String.findAllMethods(classLoader: ClassLoader = EzReflect.classLoader, findSuper: Boolean? = null, query: MethodQuery.() -> Unit): List<Method>

从类名按查询条件查找方法。

Link copied to clipboard
fun findClass(name: String, classLoader: ClassLoader = EzReflect.classLoader): Class<*>

查找类。找不到时抛出 ClassNotFoundError

Link copied to clipboard
@JvmName(name = "findClassFromString")
fun String.findClass(classLoader: ClassLoader = EzReflect.classLoader): Class<*>

字符串直接查找 Class。

Link copied to clipboard
fun findClassOrNull(name: String, classLoader: ClassLoader = EzReflect.classLoader): Class<*>?

查找类。找不到时返回 null。

Link copied to clipboard
@JvmName(name = "findClassOrNullFromString")
fun String.findClassOrNull(classLoader: ClassLoader = EzReflect.classLoader): Class<*>?

字符串直接查找 Class,找不到返回 null。

Link copied to clipboard
fun findConstructor(clz: Class<*>, query: ConstructorQuery.() -> Unit): Constructor<*>

按查询条件查找构造器。

fun findConstructor(className: String, classLoader: ClassLoader = EzReflect.classLoader, query: ConstructorQuery.() -> Unit): Constructor<*>

按类名查找构造器。

Link copied to clipboard
@JvmName(name = "findConstructorByClass")
fun Class<*>.findConstructor(query: ConstructorQuery.() -> Unit): Constructor<*>

从 Class 对象直接查找构造器。

@JvmName(name = "findConstructorByString")
fun String.findConstructor(classLoader: ClassLoader = EzReflect.classLoader, query: ConstructorQuery.() -> Unit): Constructor<*>

从类名直接查找构造器。

Link copied to clipboard
fun findConstructorBestMatch(clz: Class<*>, vararg parameterTypes: Class<*>): Constructor<*>

按参数类型查找最合适的构造器。

fun findConstructorBestMatch(clz: Class<*>, vararg args: Any?): Constructor<*>

按实参数值推断最合适的构造器。

Link copied to clipboard

按查询条件查找构造器,找不到返回 null。

fun findConstructorOrNull(className: String, classLoader: ClassLoader = EzReflect.classLoader, query: ConstructorQuery.() -> Unit): Constructor<*>?

按类名查找构造器,找不到返回 null。

Link copied to clipboard
@JvmName(name = "findConstructorOrNullByClass")
fun Class<*>.findConstructorOrNull(query: ConstructorQuery.() -> Unit): Constructor<*>?

从 Class 对象查找构造器,找不到返回 null。

@JvmName(name = "findConstructorOrNullByString")
fun String.findConstructorOrNull(classLoader: ClassLoader = EzReflect.classLoader, query: ConstructorQuery.() -> Unit): Constructor<*>?

从类名查找构造器,找不到返回 null。

Link copied to clipboard
fun findField(clz: Class<*>, findSuper: Boolean? = null, query: FieldQuery.() -> Unit): Field

按查询条件查找字段。

fun findField(className: String, classLoader: ClassLoader = EzReflect.classLoader, findSuper: Boolean? = null, query: FieldQuery.() -> Unit): Field

按类名查找字段。

Link copied to clipboard
@JvmName(name = "findFieldFromClass")
fun Class<*>.findField(findSuper: Boolean? = null, query: FieldQuery.() -> Unit): Field

从 Class 对象直接查找字段。

@JvmName(name = "findFieldFromString")
fun String.findField(classLoader: ClassLoader = EzReflect.classLoader, findSuper: Boolean? = null, query: FieldQuery.() -> Unit): Field

从类名直接查找字段的便捷写法,等价于 loadClass(name).findField { ... }。 适合一次性查找场景;多次操作同一个类时推荐先显式 loadClass / loadClassFirst。

Link copied to clipboard
fun findFieldOrNull(clz: Class<*>, findSuper: Boolean? = null, query: FieldQuery.() -> Unit): Field?

按查询条件查找字段,找不到返回 null。

fun findFieldOrNull(className: String, classLoader: ClassLoader = EzReflect.classLoader, findSuper: Boolean? = null, query: FieldQuery.() -> Unit): Field?

按类名查找字段,找不到返回 null。

Link copied to clipboard
@JvmName(name = "findFieldOrNullFromClass")
fun Class<*>.findFieldOrNull(findSuper: Boolean? = null, query: FieldQuery.() -> Unit): Field?

从 Class 对象查找字段,找不到返回 null。

@JvmName(name = "findFieldOrNullFromString")
fun String.findFieldOrNull(classLoader: ClassLoader = EzReflect.classLoader, findSuper: Boolean? = null, query: FieldQuery.() -> Unit): Field?

从类名查找字段,找不到返回 null。

Link copied to clipboard
fun Any.findFieldValue(findSuper: Boolean? = null, query: FieldQuery.() -> Unit): Any?

按查询条件查找字段并直接获取值。

Link copied to clipboard
fun <T> Any.findFieldValueAs(findSuper: Boolean? = null, query: FieldQuery.() -> Unit): T?

类型安全的查询条件查找字段值。

Link copied to clipboard
fun findFirstClass(vararg names: String, classLoader: ClassLoader = EzReflect.classLoader): Class<*>

依次尝试多个类名,返回第一个成功加载的类。

Link copied to clipboard
fun findFirstClassOrNull(vararg names: String, classLoader: ClassLoader = EzReflect.classLoader): Class<*>?

依次尝试多个类名,全部找不到时返回 null。

Link copied to clipboard
fun findMethod(clz: Class<*>, findSuper: Boolean? = null, query: MethodQuery.() -> Unit): Method

按查询条件查找方法。

fun findMethod(className: String, classLoader: ClassLoader = EzReflect.classLoader, findSuper: Boolean? = null, query: MethodQuery.() -> Unit): Method

按类名查找方法。

Link copied to clipboard
@JvmName(name = "findMethodFromClass")
fun Class<*>.findMethod(findSuper: Boolean? = null, query: MethodQuery.() -> Unit): Method

从 Class 对象直接查找方法。

@JvmName(name = "findMethodFromString")
fun String.findMethod(classLoader: ClassLoader = EzReflect.classLoader, findSuper: Boolean? = null, query: MethodQuery.() -> Unit): Method

从类名直接查找方法的便捷写法,等价于 loadClass(name).findMethod { ... }。 适合一次性查找场景;多次操作同一个类时推荐先显式 loadClass / loadClassFirst。

Link copied to clipboard
fun findMethodBestMatch(clz: Class<*>, methodName: String, vararg parameterTypes: Class<*>): Method

按参数类型查找最合适的方法。

fun findMethodBestMatch(clz: Class<*>, methodName: String, vararg args: Any?): Method

按实参数值推断最合适的方法。

Link copied to clipboard
fun findMethodOrNull(clz: Class<*>, findSuper: Boolean? = null, query: MethodQuery.() -> Unit): Method?

按查询条件查找方法,找不到返回 null。

fun findMethodOrNull(className: String, classLoader: ClassLoader = EzReflect.classLoader, findSuper: Boolean? = null, query: MethodQuery.() -> Unit): Method?

按类名查找方法,找不到返回 null。

Link copied to clipboard
@JvmName(name = "findMethodOrNullFromClass")
fun Class<*>.findMethodOrNull(findSuper: Boolean? = null, query: MethodQuery.() -> Unit): Method?

从 Class 对象查找方法,找不到返回 null。

@JvmName(name = "findMethodOrNullFromString")
fun String.findMethodOrNull(classLoader: ClassLoader = EzReflect.classLoader, findSuper: Boolean? = null, query: MethodQuery.() -> Unit): Method?

从类名直接查找方法,找不到返回 null。

Link copied to clipboard
fun <T> Field.getAs(obj: Any?): T?

Field 对象上的类型安全读取。

Link copied to clipboard
fun Any.getField(fieldName: String, type: Class<*>? = null): Any?

按名称读取字段值。

Link copied to clipboard
fun <T> Any.getFieldAs(fieldName: String, type: Class<*>? = null): T?

类型安全的字段读取。

Link copied to clipboard
fun getFieldByDesc(desc: String, classLoader: ClassLoader = EzReflect.classLoader): Field

通过 Dex/Smali 签名获取字段。

Link copied to clipboard

ClassLoader 扩展:通过 Dex 签名获取字段。

Link copied to clipboard
fun getFieldByDescOrNull(desc: String, classLoader: ClassLoader = EzReflect.classLoader): Field?

通过 Dex/Smali 签名获取字段,找不到返回 null。

Link copied to clipboard

ClassLoader 扩展:通过 Dex 签名获取字段,找不到返回 null。

Link copied to clipboard
fun <T> Any.getFieldByType(type: Class<*>, isStatic: Boolean = false): T?

按字段类型获取值。

Link copied to clipboard
fun <T> Any.getFieldByTypeOrNull(type: Class<*>, isStatic: Boolean = false): T?

按字段类型获取值,找不到返回 null。

Link copied to clipboard
fun Any.getFieldOrNull(fieldName: String, type: Class<*>? = null): Any?

按名称读取字段值,找不到返回 null(不抛异常)。

Link copied to clipboard
fun <T> Any.getFieldOrNullAs(fieldName: String, type: Class<*>? = null): T?

类型安全的字段读取,找不到返回 null。

Link copied to clipboard
fun getMethodByDesc(desc: String, classLoader: ClassLoader = EzReflect.classLoader): Method

通过 Dex/Smali 签名获取方法。

Link copied to clipboard

ClassLoader 扩展:通过 Dex 签名获取方法。

Link copied to clipboard
fun getMethodByDescOrNull(desc: String, classLoader: ClassLoader = EzReflect.classLoader): Method?

通过 Dex/Smali 签名获取方法,找不到返回 null。

Link copied to clipboard

ClassLoader 扩展:通过 Dex 签名获取方法,找不到返回 null。

Link copied to clipboard
fun <T> Field.getStaticAs(): T?

读取静态字段值(类型安全)。

Link copied to clipboard
fun Class<*>.getStaticField(fieldName: String, type: Class<*>? = null): Any?

读取静态字段值。

Link copied to clipboard
fun <T> Class<*>.getStaticFieldAs(fieldName: String, type: Class<*>? = null): T?

类型安全的静态字段读取。

Link copied to clipboard
fun Class<*>.getStaticFieldOrNull(fieldName: String, type: Class<*>? = null): Any?

读取静态字段值,找不到返回 null。

Link copied to clipboard
fun <T> Class<*>.getStaticFieldOrNullAs(fieldName: String, type: Class<*>? = null): T?

类型安全的静态字段读取,找不到返回 null。

Link copied to clipboard

ClassLoader 是否能加载指定类。

Link copied to clipboard
fun <T> Method.invokeAs(obj: Any?, vararg args: Any?): T?

类型安全的 Method.invoke 包装。

Link copied to clipboard
fun Any.invokeMethod(methodName: String, args: Args = args(), argTypes: ArgTypes = argTypes(), returnType: Class<*>? = null): Any?

按名称调用实例方法。

Link copied to clipboard
fun <T> Any.invokeMethodAs(methodName: String, args: Args = args(), argTypes: ArgTypes = argTypes(), returnType: Class<*>? = null): T?

类型安全的方法调用。

Link copied to clipboard
fun Any.invokeMethodAuto(methodName: String, vararg args: Any?): Any?

自动匹配参数类型的方法调用。

Link copied to clipboard
fun <T> Any.invokeMethodAutoAs(methodName: String, vararg args: Any?): T?

类型安全的自动匹配调用。

Link copied to clipboard
fun Any.invokeMethodBy(args: Array<out Any?> = emptyArray(), query: MethodQuery.() -> Unit): Any?

按查询条件查找并调用。

Link copied to clipboard
fun <T> Any.invokeMethodByAs(args: Array<out Any?> = emptyArray(), query: MethodQuery.() -> Unit): T?

按条件查找并调用(类型安全)。

Link copied to clipboard
fun Class<*>.invokeStaticMethod(methodName: String, args: Args = args(), argTypes: ArgTypes = argTypes(), returnType: Class<*>? = null): Any?

调用静态方法。

Link copied to clipboard
fun <T> Class<*>.invokeStaticMethodAs(methodName: String, args: Args = args(), argTypes: ArgTypes = argTypes(), returnType: Class<*>? = null): T?

类型安全的静态方法调用。

Link copied to clipboard
fun Class<*>.invokeStaticMethodAuto(methodName: String, vararg args: Any?): Any?

自动匹配参数类型的静态方法调用。

Link copied to clipboard
fun <T> Class<*>.invokeStaticMethodAutoAs(methodName: String, vararg args: Any?): T?

类型安全的自动匹配静态方法调用。

Link copied to clipboard
fun Class<*>.isSubclassOf(parent: Class<*>): Boolean

判断当前类是否是 parent 的子类(含相等)。

fun Class<*>.isSubclassOf(parentName: String, classLoader: ClassLoader = EzReflect.classLoader): Boolean

按类名判断是否为子类。

Link copied to clipboard
fun loadClass(name: String, classLoader: ClassLoader = EzReflect.classLoader): Class<*>

加载类。找不到时抛出 ClassNotFoundError

Link copied to clipboard
fun loadClasses(vararg names: String, classLoader: ClassLoader = EzReflect.classLoader): List<Class<*>>

批量加载类。跳过找不到的,不抛异常。

Link copied to clipboard
fun loadClassFirst(vararg names: String, classLoader: ClassLoader = EzReflect.classLoader): Class<*>

依次尝试多个类名,返回第一个成功加载的类。 适用于混淆后类名在不同版本间变化的场景。

Link copied to clipboard
fun loadClassFirstOrNull(vararg names: String, classLoader: ClassLoader = EzReflect.classLoader): Class<*>?

loadClassFirst,全部找不到时返回 null。

Link copied to clipboard
fun loadClassOrNull(name: String, classLoader: ClassLoader = EzReflect.classLoader): Class<*>?

加载类。找不到时返回 null。

Link copied to clipboard
fun Class<*>.method(name: String, argTypes: ArgTypes = argTypes(), returnType: Class<*>? = null): Method

按名称获取方法(精确匹配参数类型)。

Link copied to clipboard
fun Class<*>.methodOrNull(name: String, argTypes: ArgTypes = argTypes(), returnType: Class<*>? = null): Method?

按名称获取方法,找不到返回 null。

Link copied to clipboard
fun newInstance(className: String, args: Args = args(), argTypes: ArgTypes = argTypes(), classLoader: ClassLoader = EzReflect.classLoader): Any

按类名创建实例。

Link copied to clipboard
fun Class<*>.newInstance(args: Args = args(), argTypes: ArgTypes = argTypes()): Any

创建实例(精确参数类型)。

Link copied to clipboard
fun <T> newInstanceAs(className: String, args: Args = args(), argTypes: ArgTypes = argTypes(), classLoader: ClassLoader = EzReflect.classLoader): T

按类名创建实例(类型安全)。

Link copied to clipboard
fun <T> Class<*>.newInstanceAs(args: Args = args(), argTypes: ArgTypes = argTypes()): T

类型安全的实例创建。

Link copied to clipboard
fun Class<*>.newInstanceAuto(vararg args: Any?): Any

自动匹配构造器参数类型。

Link copied to clipboard
fun <T> Class<*>.newInstanceAutoAs(vararg args: Any?): T

类型安全的自动匹配实例创建。

Link copied to clipboard
fun paramTypesMatch(actual: Array<Class<*>>, expected: Array<Class<*>>): Boolean

判断两个参数类型数组是否匹配(支持 primitive/wrapper 自动匹配)。

Link copied to clipboard
fun Any.putField(field: Field, value: Any?)

用 Field 对象设置字段值。

fun Any.putField(fieldName: String, value: Any?, fieldType: Class<*>? = null)

按名称设置字段值。

Link copied to clipboard
fun Class<*>.putStaticField(field: Field, value: Any?)

用 Field 对象设置静态字段值。

fun Class<*>.putStaticField(fieldName: String, value: Any?, fieldType: Class<*>? = null)

设置静态字段值。

Link copied to clipboard
fun <T> reflect(classLoader: ClassLoader = EzReflect.classLoader, block: ReflectScope.() -> T): T

使用指定 classLoader 打开一个局部反射作用域。

Link copied to clipboard
@JvmName(name = "reflectByClassLoader")
fun <T> ClassLoader.reflect(block: ReflectScope.() -> T): T

使用当前 ClassLoader 作为默认加载器打开反射作用域。

Link copied to clipboard

Class 打开链式解析会话。

从实例打开链式解析会话。

Link copied to clipboard
fun Field.setStatic(value: Any?)

Field 扩展:设置静态字段值。

Link copied to clipboard
fun Class<*>.staticField(name: String, type: Class<*>? = null): Field

获取静态字段。

Link copied to clipboard
fun Class<*>.staticFieldOrNull(name: String, type: Class<*>? = null): Field?

获取静态字段,找不到返回 null。

Link copied to clipboard
fun String.toClass(classLoader: ClassLoader = EzReflect.classLoader): Class<*>

字符串直接转 Class。

Link copied to clipboard
fun String.toClassOrNull(classLoader: ClassLoader = EzReflect.classLoader): Class<*>?

字符串直接转 Class,找不到返回 null。

Link copied to clipboard
inline fun tryOrFalse(block: () -> Boolean): Boolean

执行代码块,异常时返回 false。

Link copied to clipboard
inline fun tryOrLog(tag: String = EZHOOKTOOL_TAG, block: () -> Unit)

执行代码块,异常时通过 EzReflect.logger 打日志。

Link copied to clipboard
inline fun <T> tryOrLogNull(tag: String = EZHOOKTOOL_TAG, block: () -> T?): T?

执行代码块,异常时打日志并返回 null。

Link copied to clipboard
inline fun <T> tryOrNull(block: () -> T?): T?

执行代码块,异常时返回 null。