import{_ as s,o,c as e,a}from"./app.fb8271cf.js";const n={},l=a(`

Notice

The English translation of this page has not been completed, you are welcome to contribute translations to us.

You can use the Chrome Translation Plugin to translate entire pages for reference.

ReflectionFactory - kt

Change Records

v1.0 first

Function Illustrate

\u8FD9\u662F\u81EA\u5B9A\u4E49 Member \u548C Class \u76F8\u5173\u529F\u80FD\u7684\u67E5\u627E\u5339\u914D\u4EE5\u53CA invoke \u7684\u5C01\u88C5\u7C7B\u3002

MembersType - class

enum class MembersType

Change Records

v1.1.0 added

Function Illustrate

\u5B9A\u4E49\u4E00\u4E2A Class \u4E2D\u7684 Member \u7C7B\u578B

ALL - enum

ALL

Change Records

v1.1.0 added

Function Illustrate

\u5168\u90E8 Method \u4E0E Constructor\u3002

METHOD - enum

METHOD

Change Records

v1.1.0 added

Function Illustrate

\u5168\u90E8 Method\u3002

CONSTRUCTOR - enum

CONSTRUCTOR

Change Records

v1.1.0 added

Function Illustrate

\u5168\u90E8 Constructor\u3002

ClassLoader.searchClass - ext-method

inline fun ClassLoader.searchClass(name: String, async: Boolean, initiate: ClassConditions): DexClassFinder.Result

Change Records

v1.1.0 added

Function Illustrate

\u901A\u8FC7\u5F53\u524D ClassLoader \u6309\u6307\u5B9A\u6761\u4EF6\u67E5\u627E\u5E76\u5F97\u5230 Dex \u4E2D\u7684 Class\u3002

Pay Attention

\u6B64\u65B9\u6CD5\u5728 Class \u6570\u91CF\u8FC7\u591A\u53CA\u67E5\u627E\u6761\u4EF6\u590D\u6742\u65F6\u4F1A\u975E\u5E38\u8017\u65F6\u3002

\u5EFA\u8BAE\u542F\u7528 async \u6216\u8BBE\u7F6E name \u53C2\u6570\uFF0Cname \u53C2\u6570\u5C06\u5728 Hook APP (\u5BBF\u4E3B) \u4E0D\u540C\u7248\u672C\u4E2D\u81EA\u52A8\u8FDB\u884C\u672C\u5730\u7F13\u5B58\u4EE5\u63D0\u5347\u6548\u7387\u3002

\u6B64\u529F\u80FD\u5C1A\u5728\u8BD5\u9A8C\u9636\u6BB5\uFF0C\u6027\u80FD\u4E0E\u7A33\u5B9A\u6027\u53EF\u80FD\u4ECD\u7136\u5B58\u5728\u95EE\u9898\uFF0C\u4F7F\u7528\u8FC7\u7A0B\u9047\u5230\u95EE\u9898\u8BF7\u5411\u6211\u4EEC\u62A5\u544A\u5E76\u5E2E\u52A9\u6211\u4EEC\u6539\u8FDB\u3002

ClassLoader.onLoadClass - ext-method

fun ClassLoader.onLoadClass(result: (Class<*>) -> Unit)

Change Records

v1.1.0 added

Function Illustrate

\u76D1\u542C\u5F53\u524D ClassLoader \u7684 ClassLoader.loadClass \u65B9\u6CD5\u88C5\u8F7D\u3002

Pay Attention

\u53EA\u6709\u5F53\u524D ClassLoader \u6709\u4E3B\u52A8\u4F7F\u7528 ClassLoader.loadClass \u4E8B\u4EF6\u65F6\u624D\u80FD\u88AB\u6355\u83B7\u3002

\u8FD9\u662F\u4E00\u4E2A\u5B9E\u9A8C\u6027\u529F\u80FD\uFF0C\u4E00\u822C\u60C5\u51B5\u4E0B\u4E0D\u4F1A\u7528\u5230\u6B64\u65B9\u6CD5\uFF0C\u4E0D\u4FDD\u8BC1\u4E0D\u4F1A\u53D1\u751F\u9519\u8BEF\u3002

\u53EA\u80FD\u5728 (Xposed) \u5BBF\u4E3B\u73AF\u5883\u4F7F\u7528\u6B64\u529F\u80FD\uFF0C\u5176\u5B83\u73AF\u5883\u4E0B\u4F7F\u7528\u5C06\u4E0D\u751F\u6548\u4E14\u4F1A\u6253\u5370\u8B66\u544A\u4FE1\u606F\u3002

Function Example

\u9488\u5BF9\u4E00\u4E9B\u4F7F\u7528\u7279\u5B9A ClassLoader \u88C5\u8F7D Class \u7684\u5BBF\u4E3B\u5E94\u7528\uFF0C\u4F60\u53EF\u4EE5\u4F7F\u7528\u6B64\u65B9\u6CD5\u6765\u76D1\u542C Class \u52A0\u8F7D\u60C5\u51B5\u3002

Notice

\u4E3A\u4E86\u9632\u6B62\u53D1\u751F\u95EE\u9898\uFF0C\u4F60\u9700\u8981\u5F97\u5230\u4E00\u4E2A\u5B58\u5728\u7684 ClassLoader \u5B9E\u4F8B\u6765\u4F7F\u7528\u6B64\u529F\u80FD\u3002

\u6BD4\u5982\u6211\u4EEC\u5728 PackageParam \u4E2D\u4F7F\u7528 appClassLoader\u3002

The following example

appClassLoader.onLoadClass { clazz ->
    // \u5F97\u5230 clazz \u5373\u52A0\u8F7D\u5BF9\u8C61
    clazz... // \u8FD9\u91CC\u8FDB\u884C\u4F60\u9700\u8981\u7684\u64CD\u4F5C
}

\u6216\u4F7F\u7528\u4F60\u5F97\u5230\u7684\u5B58\u5728\u7684 ClassLoader \u5B9E\u4F8B\uFF0C\u53EF\u4EE5\u901A\u8FC7 Hook \u83B7\u53D6\u3002

The following example

val customClassLoader: ClassLoader? = ... // \u5047\u8BBE\u8FD9\u4E2A\u5C31\u662F\u4F60\u7684 ClassLoader
customClassLoader?.onLoadClass { clazz ->
    // ...
}

\u5728\u5224\u65AD\u5230\u8FD9\u4E2A Class \u88AB\u88C5\u8F7D\u6210\u529F\u65F6\uFF0C\u5F00\u59CB\u6267\u884C\u4F60\u7684 Hook \u529F\u80FD\u3002

The following example

val customClassLoader: ClassLoader? = ... // \u5047\u8BBE\u8FD9\u4E2A\u5C31\u662F\u4F60\u7684 ClassLoader
customClassLoader?.onLoadClass { clazz ->
    if(clazz.name == /** \u4F60\u9700\u8981\u7684 Class \u540D\u79F0 */) {
        clazz.hook {
            // ...
        }
    }
}

hookClass - field

Change Records

v1.0 first

v1.1.0 removed

HookClass \u76F8\u5173\u529F\u80FD\u4E0D\u518D\u5BF9\u5916\u5F00\u653E

normalClass - field

Change Records

v1.0 first

v1.1.0 removed

HookClass \u76F8\u5173\u529F\u80FD\u4E0D\u518D\u5BF9\u5916\u5F00\u653E

hasClass - field

Change Records

v1.0 first

v1.1.0 removed

\u8BF7\u76F4\u63A5\u4F7F\u7528 hasClass() \u65E0\u53C2\u65B9\u6CD5

Class.hasExtends - ext-field

val Class<*>.hasExtends: Boolean

Change Records

v1.0.80 added

Function Illustrate

\u5F53\u524D Class \u662F\u5426\u6709\u7EE7\u627F\u5173\u7CFB\uFF0C\u7236\u7C7B\u662F Any \u5C06\u88AB\u8BA4\u4E3A\u6CA1\u6709\u7EE7\u627F\u5173\u7CFB\u3002

classOf - method

Change Records

v1.0 first

v1.1.0 deprecated

\u8BF7\u8F6C\u5230 toClass(...) \u65B9\u6CD5

String.toClass - ext-method

fun String.toClass(loader: ClassLoader?): Class<*>

Change Records

v1.1.0 added

Function Illustrate

\u901A\u8FC7\u5B57\u7B26\u4E32\u7C7B\u540D\u8F6C\u6362\u4E3A loader \u4E2D\u7684\u5B9E\u4F53\u7C7B\u3002

Function Example

\u4F60\u53EF\u4EE5\u76F4\u63A5\u586B\u5199\u4F60\u8981\u67E5\u627E\u7684\u76EE\u6807 Class\uFF0C\u5FC5\u987B\u5728\u9ED8\u8BA4 ClassLoader \u4E0B\u5B58\u5728\u3002

The following example

"com.example.demo.DemoClass".toClass()

\u4F60\u8FD8\u53EF\u4EE5\u81EA\u5B9A\u4E49 Class \u6240\u5728\u7684 ClassLoader\u3002

The following example

val customClassLoader: ClassLoader? = ... // \u5047\u8BBE\u8FD9\u4E2A\u5C31\u662F\u4F60\u7684 ClassLoader
"com.example.demo.DemoClass".toClass(customClassLoader)

String.toClassOrNull - ext-method

fun String.toClassOrNull(loader: ClassLoader?): Class<*>?

Change Records

v1.1.0 added

Function Illustrate

\u901A\u8FC7\u5B57\u7B26\u4E32\u7C7B\u540D\u8F6C\u6362\u4E3A loader \u4E2D\u7684\u5B9E\u4F53\u7C7B\u3002

\u627E\u4E0D\u5230 Class \u4F1A\u8FD4\u56DE null\uFF0C\u4E0D\u4F1A\u629B\u51FA\u5F02\u5E38\u3002

Function Example

\u7528\u6CD5\u8BF7\u53C2\u8003 String.toClass \u65B9\u6CD5\u3002

classOf - method

inline fun <reified T> classOf(loader: ClassLoader?): Class<*>

Change Records

v1.1.0 added

Function Illustrate

\u901A\u8FC7 T \u5F97\u5230\u5176 Class \u5B9E\u4F8B\u5E76\u8F6C\u6362\u4E3A\u5B9E\u4F53\u7C7B\u3002

Function Example

\u6211\u4EEC\u8981\u83B7\u53D6\u4E00\u4E2A Class \u5728 Kotlin \u4E0B\u4E0D\u901A\u8FC7\u53CD\u5C04\u65F6\u5E94\u8BE5\u8FD9\u6837\u505A\u3002

The following example

DemoClass::class.java

\u73B0\u5728\uFF0C\u4F60\u53EF\u4EE5\u76F4\u63A5 cast \u4E00\u4E2A\u5B9E\u4F8B\u5E76\u83B7\u53D6\u5B83\u7684 Class \u5BF9\u8C61\uFF0C\u5FC5\u987B\u5728\u5F53\u524D ClassLoader \u4E0B\u5B58\u5728\u3002

The following example

classOf<DemoClass>()

\u82E5\u76EE\u6807\u5B58\u5728\u7684 Class \u4E3A stub\uFF0C\u901A\u8FC7\u8FD9\u79CD\u65B9\u5F0F\uFF0C\u4F60\u8FD8\u53EF\u4EE5\u81EA\u5B9A\u4E49 Class \u6240\u5728\u7684 ClassLoader\u3002

The following example

val customClassLoader: ClassLoader? = ... // \u5047\u8BBE\u8FD9\u4E2A\u5C31\u662F\u4F60\u7684 ClassLoader
classOf<DemoClass>(customClassLoader)

String.hasClass - ext-method

fun String.hasClass(loader: ClassLoader?): Boolean

Change Records

v1.0 first

v1.1.0 modified

\u652F\u6301\u76F4\u63A5\u4F7F\u7528\u7A7A\u53C2\u6570\u65B9\u6CD5\u4F7F\u7528\u9ED8\u8BA4 ClassLoader \u8FDB\u884C\u5224\u65AD

Function Illustrate

\u901A\u8FC7\u5B57\u7B26\u4E32\u7C7B\u540D\u4F7F\u7528\u6307\u5B9A\u7684 ClassLoader \u67E5\u627E\u662F\u5426\u5B58\u5728\u3002

Function Example

\u4F60\u53EF\u4EE5\u8F7B\u677E\u7684\u4F7F\u7528\u6B64\u65B9\u6CD5\u5224\u65AD\u5B57\u7B26\u4E32\u4E2D\u7684\u7C7B\u662F\u5426\u5B58\u5728\uFF0C\u6548\u679C\u7B49\u540C\u4E8E\u76F4\u63A5\u4F7F\u7528 Class.forName\u3002

The following example

if("com.example.demo.DemoClass".hasClass()) {
    // Your code here.
}

\u586B\u5165\u65B9\u6CD5\u4E2D\u7684 loader \u53C2\u6570\u53EF\u5224\u65AD\u6307\u5B9A\u7684 ClassLoader \u4E2D\u7684 Class \u662F\u5426\u5B58\u5728\u3002

The following example

val customClassLoader: ClassLoader? = ... // \u5047\u8BBE\u8FD9\u4E2A\u5C31\u662F\u4F60\u7684 ClassLoader
if("com.example.demo.DemoClass".hasClass(customClassLoader)) {
    // Your code here.
}

Class.hasField - ext-method

inline fun Class<*>.hasField(initiate: FieldConditions): Boolean

Change Records

v1.0.4 added

v1.0.67 modified

\u5408\u5E76\u5230 FieldFinder

v1.0.80 modified

\u5C06\u65B9\u6CD5\u4F53\u8FDB\u884C inline

Function Illustrate

\u67E5\u627E\u53D8\u91CF\u662F\u5426\u5B58\u5728\u3002

Class.hasMethod - ext-method

inline fun Class<*>.hasMethod(initiate: MethodConditions): Boolean

Change Records

v1.0 first

v1.0.1 modified

\u65B0\u589E returnType \u53C2\u6570

v1.0.67 modified

\u5408\u5E76\u5230 MethodFinder

v1.0.80 modified

\u5C06\u65B9\u6CD5\u4F53\u8FDB\u884C inline

Function Illustrate

\u67E5\u627E\u65B9\u6CD5\u662F\u5426\u5B58\u5728\u3002

Class.hasConstructor - ext-method

inline fun Class<*>.hasConstructor(initiate: ConstructorConditions): Boolean

Change Records

v1.0.2 added

v1.0.67 modified

\u5408\u5E76\u5230 ConstructorFinder

v1.0.80 modified

\u5C06\u65B9\u6CD5\u4F53\u8FDB\u884C inline

Function Illustrate

\u67E5\u627E\u6784\u9020\u65B9\u6CD5\u662F\u5426\u5B58\u5728\u3002

Member.hasModifiers - ext-method

inline fun Member.hasModifiers(conditions: ModifierConditions): Boolean

Change Records

v1.0.67 added

v1.0.80 modified

\u5C06\u65B9\u6CD5\u4F53\u8FDB\u884C inline

v1.1.0 modified

\u5408\u5E76\u5230 ModifierConditions

Function Illustrate

\u67E5\u627E Member \u4E2D\u5339\u914D\u7684\u63CF\u8FF0\u7B26\u3002

Class.hasModifiers - ext-method

inline fun Class<*>.hasModifiers(conditions: ModifierConditions): Boolean

Change Records

v1.1.0 added

Function Illustrate

\u67E5\u627E Class \u4E2D\u5339\u914D\u7684\u63CF\u8FF0\u7B26\u3002

obtainStaticFieldAny - method

Change Records

v1.0 first

v1.0.1 removed

obtainFieldAny - method

Change Records

v1.0 first

v1.0.1 removed

modifyStaticField - method

Change Records

v1.0 first

v1.0.1 removed

modifyField - method

Change Records

v1.0 first

v1.0.1 removed

Class.field - ext-method

inline fun Class<*>.field(initiate: FieldConditions): FieldFinder.Result

Change Records

v1.0.2 added

v1.0.80 modified

\u5C06\u65B9\u6CD5\u4F53\u8FDB\u884C inline

Function Illustrate

\u67E5\u627E\u5E76\u5F97\u5230\u53D8\u91CF\u3002

Class.method - ext-method

inline fun Class<*>.method(initiate: MethodConditions): MethodFinder.Result

Change Records

v1.0 first

v1.0.1 modified

obtainMethod \u66F4\u540D\u4E3A method

\u65B0\u589E returnType \u53C2\u6570

v1.0.2 modified

\u5408\u5E76\u5230 MethodFinder \u65B9\u6CD5\u4F53

v1.0.80 modified

\u5C06\u65B9\u6CD5\u4F53\u8FDB\u884C inline

Function Illustrate

\u67E5\u627E\u5E76\u5F97\u5230\u65B9\u6CD5\u3002

Class.constructor - ext-method

inline fun Class<*>.constructor(initiate: ConstructorConditions): ConstructorFinder.Result

Change Records

v1.0 first

v1.0.1 modified

obtainConstructor \u66F4\u540D\u4E3A constructor

v1.0.2 modified

\u5408\u5E76\u5230 ConstructorFinder \u65B9\u6CD5\u4F53

v1.0.80 modified

\u5C06\u65B9\u6CD5\u4F53\u8FDB\u884C inline

Function Illustrate

\u67E5\u627E\u5E76\u5F97\u5230\u6784\u9020\u65B9\u6CD5\u3002

callStatic - method

Change Records

v1.0 first

v1.0.1 modified

invokeStatic \u66F4\u540D\u4E3A callStatic

v1.0.2 removed

call - method

Change Records

v1.0 first

v1.0.1 modified

invokeAny \u66F4\u540D\u4E3A call

v1.0.2 removed

Class.generic - ext-method

fun Class<*>.generic(): GenericClass?

Change Records

v1.1.0 added

Function Illustrate

\u83B7\u5F97\u5F53\u524D Class \u7684\u6CDB\u578B\u7236\u7C7B\u3002

\u5982\u679C\u5F53\u524D\u5B9E\u4F8B\u4E0D\u5B58\u5728\u6CDB\u578B\u5C06\u8FD4\u56DE null\u3002

Class.generic - ext-method

inline fun Class<*>.generic(initiate: GenericClass.() -> Unit): GenericClass?

Change Records

v1.1.0 added

Function Illustrate

\u83B7\u5F97\u5F53\u524D Class \u7684\u6CDB\u578B\u7236\u7C7B\u3002

\u5982\u679C\u5F53\u524D\u5B9E\u4F8B\u4E0D\u5B58\u5728\u6CDB\u578B\u5C06\u8FD4\u56DE null\u3002

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

Change Records

v1.0.70 added

v1.1.0 added

\u65B0\u589E ignored \u53C2\u6570\uFF0C\u53EF\u4EE5\u5FFD\u7565\u5728 CurrentClass \u4E2D\u51FA\u73B0\u7684\u5F02\u5E38

\u65B0\u589E\u4E0D\u4F7F\u7528 current { ... } \u8C03\u7528\u57DF\u76F4\u63A5\u4F7F\u7528 current() \u5F97\u5230\u5B9E\u4F8B\u7684\u7C7B\u64CD\u4F5C\u5BF9\u8C61

Function Illustrate

\u83B7\u5F97\u5F53\u524D\u5B9E\u4F8B\u7684\u7C7B\u64CD\u4F5C\u5BF9\u8C61\u3002

Class.buildOfAny - ext-method

Change Records

v1.0.70 added

v1.0.80 modified

\u5C06\u65B9\u6CD5\u4F53\u8FDB\u884C inline

v1.1.0 deprecated

\u8BF7\u8F6C\u79FB\u5230 buildOf \u65B9\u6CD5

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?

Change Records

v1.0.70 added

v1.0.80 modified

\u5C06\u65B9\u6CD5\u4F53\u8FDB\u884C inline

v1.1.0 modified

\u52A0\u5165\u65E0\u6CDB\u578B\u65B9\u6CD5 buildOf

Function Illustrate

\u901A\u8FC7\u6784\u9020\u65B9\u6CD5\u521B\u5EFA\u65B0\u5B9E\u4F8B\uFF0C\u6307\u5B9A\u7C7B\u578B T \u6216\u4EFB\u610F\u7C7B\u578B Any\u3002

Class.allMethods - ext-method

inline fun Class<*>.allMethods(result: (index: Int, method: Method) -> Unit)

Change Records

v1.0.70 added

v1.0.80 modified

\u5C06\u65B9\u6CD5\u4F53\u8FDB\u884C inline

Function Illustrate

\u904D\u5386\u5F53\u524D\u7C7B\u4E2D\u7684\u6240\u6709\u65B9\u6CD5\u3002

Class.allConstructors - ext-method

inline fun Class<*>.allConstructors(result: (index: Int, constructor: Constructor<*>) -> Unit)

Change Records

v1.0.70 added

v1.0.80 modified

\u5C06\u65B9\u6CD5\u4F53\u8FDB\u884C inline

Function Illustrate

\u904D\u5386\u5F53\u524D\u7C7B\u4E2D\u7684\u6240\u6709\u6784\u9020\u65B9\u6CD5\u3002

Class.allFields - ext-method

inline fun Class<*>.allFields(result: (index: Int, field: Field) -> Unit)

Change Records

v1.0.70 added

v1.0.80 modified

\u5C06\u65B9\u6CD5\u4F53\u8FDB\u884C inline

Function Illustrate

\u904D\u5386\u5F53\u524D\u7C7B\u4E2D\u7684\u6240\u6709\u53D8\u91CF\u3002

`,310),p=[l];function c(t,r){return o(),e("div",null,p)}const i=s(n,[["render",c],["__file","ReflectionFactory.html.vue"]]);export{i as default};