import{_ as s,o,c as a,a as e}from"./app.99fcdd51.js";const n={},l=e(`
\u53D8\u66F4\u8BB0\u5F55
v1.0
\u6DFB\u52A0
\u529F\u80FD\u63CF\u8FF0
\u8FD9\u662F\u81EA\u5B9A\u4E49
Member
\u548CClass
\u76F8\u5173\u529F\u80FD\u7684\u67E5\u627E\u5339\u914D\u4EE5\u53CAinvoke
\u7684\u5C01\u88C5\u7C7B\u3002
enum class MembersType
\u53D8\u66F4\u8BB0\u5F55
v1.1.0
\u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u5B9A\u4E49\u4E00\u4E2A
Class
\u4E2D\u7684Member
\u7C7B\u578B
ALL
\u53D8\u66F4\u8BB0\u5F55
v1.1.0
\u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u5168\u90E8
Method
\u4E0EConstructor
\u3002
METHOD
\u53D8\u66F4\u8BB0\u5F55
v1.1.0
\u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u5168\u90E8
Method
\u3002
CONSTRUCTOR
\u53D8\u66F4\u8BB0\u5F55
v1.1.0
\u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u5168\u90E8
Constructor
\u3002
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\u6709Class
\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
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\u7684Class
\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
fun ClassLoader.onLoadClass(result: (Class<*>) -> Unit)
\u53D8\u66F4\u8BB0\u5F55
v1.1.0
\u65B0\u589E
\u529F\u80FD\u63CF\u8FF0
\u76D1\u542C\u5F53\u524D
ClassLoader
\u7684ClassLoader.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 {
// ...
}
}
}
\u53D8\u66F4\u8BB0\u5F55
v1.0
\u6DFB\u52A0
v1.1.0
\u79FB\u9664
HookClass
\u76F8\u5173\u529F\u80FD\u4E0D\u518D\u5BF9\u5916\u5F00\u653E
\u53D8\u66F4\u8BB0\u5F55
v1.0
\u6DFB\u52A0
v1.1.0
\u79FB\u9664
HookClass
\u76F8\u5173\u529F\u80FD\u4E0D\u518D\u5BF9\u5916\u5F00\u653E
\u53D8\u66F4\u8BB0\u5F55
v1.0
\u6DFB\u52A0
v1.1.0
\u79FB\u9664
\u8BF7\u76F4\u63A5\u4F7F\u7528 hasClass()
\u65E0\u53C2\u65B9\u6CD5
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\u662FAny
\u5C06\u88AB\u8BA4\u4E3A\u6CA1\u6709\u7EE7\u627F\u5173\u7CFB\u3002
\u53D8\u66F4\u8BB0\u5F55
v1.0
\u6DFB\u52A0
v1.1.0
\u4F5C\u5E9F
\u8BF7\u8F6C\u5230 toClass(...)
\u65B9\u6CD5
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)
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
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\u5176Class
\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)
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.
}
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
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
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
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
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
\u53D8\u66F4\u8BB0\u5F55
v1.0
\u6DFB\u52A0
v1.0.1
\u79FB\u9664
\u53D8\u66F4\u8BB0\u5F55
v1.0
\u6DFB\u52A0
v1.0.1
\u79FB\u9664
\u53D8\u66F4\u8BB0\u5F55
v1.0
\u6DFB\u52A0
v1.0.1
\u79FB\u9664
\u53D8\u66F4\u8BB0\u5F55
v1.0
\u6DFB\u52A0
v1.0.1
\u79FB\u9664
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
inline fun Class<*>.method(initiate: MethodConditions): MethodFinder.Result
\u53D8\u66F4\u8BB0\u5F55
v1.0
\u6DFB\u52A0
v1.0.1
\u4FEE\u6539
\u66F4\u540D\u4E3A obtainMethod
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
inline fun Class<*>.constructor(initiate: ConstructorConditions): ConstructorFinder.Result
\u53D8\u66F4\u8BB0\u5F55
v1.0
\u6DFB\u52A0
v1.0.1
\u4FEE\u6539
\u66F4\u540D\u4E3A obtainConstructor
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
\u53D8\u66F4\u8BB0\u5F55
v1.0
\u6DFB\u52A0
v1.0.1
\u4FEE\u6539
\u66F4\u540D\u4E3A invokeStatic
callStatic
v1.0.2
\u79FB\u9664
\u53D8\u66F4\u8BB0\u5F55
v1.0
\u6DFB\u52A0
v1.0.1
\u4FEE\u6539
\u66F4\u540D\u4E3A invokeAny
call
v1.0.2
\u79FB\u9664
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
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
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
\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
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\u578BAny
\u3002
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
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
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
`,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};\u904D\u5386\u5F53\u524D\u7C7B\u4E2D\u7684\u6240\u6709\u53D8\u91CF\u3002