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

ReflectionFactory - kt

\u53D8\u66F4\u8BB0\u5F55

v1.0 \u6DFB\u52A0

\u529F\u80FD\u63CF\u8FF0

\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

\u53D8\u66F4\u8BB0\u5F55

v1.1.0 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

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

ALL - enum

ALL

\u53D8\u66F4\u8BB0\u5F55

v1.1.0 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\u5168\u90E8 Method \u4E0E Constructor\u3002

METHOD - enum

METHOD

\u53D8\u66F4\u8BB0\u5F55

v1.1.0 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\u5168\u90E8 Method\u3002

CONSTRUCTOR - enum

CONSTRUCTOR

\u53D8\u66F4\u8BB0\u5F55

v1.1.0 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\u5168\u90E8 Constructor\u3002

ClassLoader.listOfClasses - ext-method

fun ClassLoader.listOfClasses(): List<String>

\u53D8\u66F4\u8BB0\u5F55

v1.1.2 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\u5199\u51FA\u5F53\u524D ClassLoader \u4E0B\u6240\u6709 Class \u540D\u79F0\u6570\u7EC4\u3002

\u6CE8\u610F

\u6B64\u65B9\u6CD5\u5728 Class \u6570\u91CF\u8FC7\u591A\u65F6\u4F1A\u975E\u5E38\u8017\u65F6\u3002

\u82E5\u8981\u6309\u6307\u5B9A\u89C4\u5219\u67E5\u627E\u4E00\u4E2A Class\uFF0C\u8BF7\u4F7F\u7528 ClassLoader.searchClass \u65B9\u6CD5\u3002

ClassLoader.searchClass - ext-method

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

\u53D8\u66F4\u8BB0\u5F55

v1.1.0 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

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

\u7279\u522B\u6CE8\u610F

\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)

\u53D8\u66F4\u8BB0\u5F55

v1.1.0 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

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

\u7279\u522B\u6CE8\u610F

\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

\u529F\u80FD\u793A\u4F8B

\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

\u6CE8\u610F

\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

\u793A\u4F8B\u5982\u4E0B

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

\u793A\u4F8B\u5982\u4E0B

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

\u793A\u4F8B\u5982\u4E0B

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

\u53D8\u66F4\u8BB0\u5F55

v1.0 \u6DFB\u52A0

v1.1.0 \u79FB\u9664

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

normalClass - field

\u53D8\u66F4\u8BB0\u5F55

v1.0 \u6DFB\u52A0

v1.1.0 \u79FB\u9664

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

hasClass - field

\u53D8\u66F4\u8BB0\u5F55

v1.0 \u6DFB\u52A0

v1.1.0 \u79FB\u9664

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

Class.hasExtends - ext-field

val Class<*>.hasExtends: Boolean

\u53D8\u66F4\u8BB0\u5F55

v1.0.80 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\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

\u53D8\u66F4\u8BB0\u5F55

v1.0 \u6DFB\u52A0

v1.1.0 \u4F5C\u5E9F

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

String.toClass - ext-method

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

\u53D8\u66F4\u8BB0\u5F55

v1.1.0 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

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

\u529F\u80FD\u793A\u4F8B

\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

\u793A\u4F8B\u5982\u4E0B

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

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

\u793A\u4F8B\u5982\u4E0B

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<*>?

\u53D8\u66F4\u8BB0\u5F55

v1.1.0 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\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

\u529F\u80FD\u793A\u4F8B

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

classOf - method

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

\u53D8\u66F4\u8BB0\u5F55

v1.1.0 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

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

\u529F\u80FD\u793A\u4F8B

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

\u793A\u4F8B\u5982\u4E0B

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

\u793A\u4F8B\u5982\u4E0B

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

\u793A\u4F8B\u5982\u4E0B

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

\u53D8\u66F4\u8BB0\u5F55

v1.0 \u6DFB\u52A0

v1.1.0 \u4FEE\u6539

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

\u529F\u80FD\u63CF\u8FF0

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

\u529F\u80FD\u793A\u4F8B

\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

\u793A\u4F8B\u5982\u4E0B

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

\u793A\u4F8B\u5982\u4E0B

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

\u53D8\u66F4\u8BB0\u5F55

v1.0.4 \u65B0\u589E

v1.0.67 \u4FEE\u6539

\u5408\u5E76\u5230 FieldFinder

v1.0.80 \u4FEE\u6539

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

\u529F\u80FD\u63CF\u8FF0

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

Class.hasMethod - ext-method

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

\u53D8\u66F4\u8BB0\u5F55

v1.0 \u6DFB\u52A0

v1.0.1 \u4FEE\u6539

\u65B0\u589E returnType \u53C2\u6570

v1.0.67 \u4FEE\u6539

\u5408\u5E76\u5230 MethodFinder

v1.0.80 \u4FEE\u6539

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

\u529F\u80FD\u63CF\u8FF0

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

Class.hasConstructor - ext-method

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

\u53D8\u66F4\u8BB0\u5F55

v1.0.2 \u65B0\u589E

v1.0.67 \u4FEE\u6539

\u5408\u5E76\u5230 ConstructorFinder

v1.0.80 \u4FEE\u6539

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

\u529F\u80FD\u63CF\u8FF0

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

Member.hasModifiers - ext-method

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

\u53D8\u66F4\u8BB0\u5F55

v1.0.67 \u65B0\u589E

v1.0.80 \u4FEE\u6539

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

v1.1.0 \u4FEE\u6539

\u5408\u5E76\u5230 ModifierConditions

\u529F\u80FD\u63CF\u8FF0

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

Class.hasModifiers - ext-method

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

\u53D8\u66F4\u8BB0\u5F55

v1.1.0 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

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

obtainStaticFieldAny - method

\u53D8\u66F4\u8BB0\u5F55

v1.0 \u6DFB\u52A0

v1.0.1 \u79FB\u9664

obtainFieldAny - method

\u53D8\u66F4\u8BB0\u5F55

v1.0 \u6DFB\u52A0

v1.0.1 \u79FB\u9664

modifyStaticField - method

\u53D8\u66F4\u8BB0\u5F55

v1.0 \u6DFB\u52A0

v1.0.1 \u79FB\u9664

modifyField - method

\u53D8\u66F4\u8BB0\u5F55

v1.0 \u6DFB\u52A0

v1.0.1 \u79FB\u9664

Class.field - ext-method

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

\u53D8\u66F4\u8BB0\u5F55

v1.0.2 \u65B0\u589E

v1.0.80 \u4FEE\u6539

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

\u529F\u80FD\u63CF\u8FF0

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

Class.method - ext-method

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

\u53D8\u66F4\u8BB0\u5F55

v1.0 \u6DFB\u52A0

v1.0.1 \u4FEE\u6539

obtainMethod \u66F4\u540D\u4E3A method

\u65B0\u589E returnType \u53C2\u6570

v1.0.2 \u4FEE\u6539

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

v1.0.80 \u4FEE\u6539

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

\u529F\u80FD\u63CF\u8FF0

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

Class.constructor - ext-method

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

\u53D8\u66F4\u8BB0\u5F55

v1.0 \u6DFB\u52A0

v1.0.1 \u4FEE\u6539

obtainConstructor \u66F4\u540D\u4E3A constructor

v1.0.2 \u4FEE\u6539

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

v1.0.80 \u4FEE\u6539

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

\u529F\u80FD\u63CF\u8FF0

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

callStatic - method

\u53D8\u66F4\u8BB0\u5F55

v1.0 \u6DFB\u52A0

v1.0.1 \u4FEE\u6539

invokeStatic \u66F4\u540D\u4E3A callStatic

v1.0.2 \u79FB\u9664

call - method

\u53D8\u66F4\u8BB0\u5F55

v1.0 \u6DFB\u52A0

v1.0.1 \u4FEE\u6539

invokeAny \u66F4\u540D\u4E3A call

v1.0.2 \u79FB\u9664

Class.generic - ext-method

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

\u53D8\u66F4\u8BB0\u5F55

v1.1.0 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\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?

\u53D8\u66F4\u8BB0\u5F55

v1.1.0 \u65B0\u589E

\u529F\u80FD\u63CF\u8FF0

\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

\u53D8\u66F4\u8BB0\u5F55

v1.0.70 \u65B0\u589E

v1.1.0 \u65B0\u589E

\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

\u529F\u80FD\u63CF\u8FF0

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

Class.buildOfAny - ext-method

\u53D8\u66F4\u8BB0\u5F55

v1.0.70 \u65B0\u589E

v1.0.80 \u4FEE\u6539

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

v1.1.0 \u4F5C\u5E9F

\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?

\u53D8\u66F4\u8BB0\u5F55

v1.0.70 \u65B0\u589E

v1.0.80 \u4FEE\u6539

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

v1.1.0 \u4FEE\u6539

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

\u529F\u80FD\u63CF\u8FF0

\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)

\u53D8\u66F4\u8BB0\u5F55

v1.0.70 \u65B0\u589E

v1.0.80 \u4FEE\u6539

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

\u529F\u80FD\u63CF\u8FF0

\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)

\u53D8\u66F4\u8BB0\u5F55

v1.0.70 \u65B0\u589E

v1.0.80 \u4FEE\u6539

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

\u529F\u80FD\u63CF\u8FF0

\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)

\u53D8\u66F4\u8BB0\u5F55

v1.0.70 \u65B0\u589E

v1.0.80 \u4FEE\u6539

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

\u529F\u80FD\u63CF\u8FF0

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

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