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.
Change Records
v1.0
first
Function Illustrate
\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
Change Records
v1.1.0
added
Function Illustrate
\u5B9A\u4E49\u4E00\u4E2A
Class
\u4E2D\u7684Member
\u7C7B\u578B
ALL
Change Records
v1.1.0
added
Function Illustrate
\u5168\u90E8
Method
\u4E0EConstructor
\u3002
METHOD
Change Records
v1.1.0
added
Function Illustrate
\u5168\u90E8
Method
\u3002
CONSTRUCTOR
Change Records
v1.1.0
added
Function Illustrate
\u5168\u90E8
Constructor
\u3002
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\u7684Class
\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
fun ClassLoader.onLoadClass(result: (Class<*>) -> Unit)
Change Records
v1.1.0
added
Function Illustrate
\u76D1\u542C\u5F53\u524D
ClassLoader
\u7684ClassLoader.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 {
// ...
}
}
}
Change Records
v1.0
first
v1.1.0
removed
HookClass
\u76F8\u5173\u529F\u80FD\u4E0D\u518D\u5BF9\u5916\u5F00\u653E
Change Records
v1.0
first
v1.1.0
removed
HookClass
\u76F8\u5173\u529F\u80FD\u4E0D\u518D\u5BF9\u5916\u5F00\u653E
Change Records
v1.0
first
v1.1.0
removed
\u8BF7\u76F4\u63A5\u4F7F\u7528 hasClass()
\u65E0\u53C2\u65B9\u6CD5
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\u662FAny
\u5C06\u88AB\u8BA4\u4E3A\u6CA1\u6709\u7EE7\u627F\u5173\u7CFB\u3002
Change Records
v1.0
first
v1.1.0
deprecated
\u8BF7\u8F6C\u5230 toClass(...)
\u65B9\u6CD5
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)
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
inline fun <reified T> classOf(loader: ClassLoader?): Class<*>
Change Records
v1.1.0
added
Function Illustrate
\u901A\u8FC7
T
\u5F97\u5230\u5176Class
\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)
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.
}
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
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
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
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
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
Change Records
v1.0
first
v1.0.1
removed
Change Records
v1.0
first
v1.0.1
removed
Change Records
v1.0
first
v1.0.1
removed
Change Records
v1.0
first
v1.0.1
removed
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
inline fun Class<*>.method(initiate: MethodConditions): MethodFinder.Result
Change Records
v1.0
first
v1.0.1
modified
\u66F4\u540D\u4E3A obtainMethod
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
inline fun Class<*>.constructor(initiate: ConstructorConditions): ConstructorFinder.Result
Change Records
v1.0
first
v1.0.1
modified
\u66F4\u540D\u4E3A obtainConstructor
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
Change Records
v1.0
first
v1.0.1
modified
\u66F4\u540D\u4E3A invokeStatic
callStatic
v1.0.2
removed
Change Records
v1.0
first
v1.0.1
modified
\u66F4\u540D\u4E3A invokeAny
call
v1.0.2
removed
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
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
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
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
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\u578BAny
\u3002
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
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
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
`,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};\u904D\u5386\u5F53\u524D\u7C7B\u4E2D\u7684\u6240\u6709\u53D8\u91CF\u3002