import{_ as s,o as a,c as n,e as l}from"./app.3cb5b3a5.js";const o={},e=l(`
\u53D8\u66F4\u8BB0\u5F55
v1.0.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
fun ClassLoader.listOfClasses(): List<String>
\u53D8\u66F4\u8BB0\u5F55
v1.0.0
\u6DFB\u52A0
\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(context: Context?, name: String, async: Boolean, initiate: ClassConditions): DexClassFinder.Result
\u53D8\u66F4\u8BB0\u5F55
v1.0.0
\u6DFB\u52A0
\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\u5F53\u524D APP \u4E0D\u540C\u7248\u672C\u4E2D\u81EA\u52A8\u8FDB\u884C\u672C\u5730\u7F13\u5B58\u4EE5\u63D0\u5347\u6548\u7387\u3002
\u5982\u679C\u4F7F\u7528\u4E86 async \u6216 name \u53C2\u6570\uFF0C\u5219\u5FC5\u987B\u586B\u5199 context \u53C2\u6570\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
val Class<*>.hasExtends: Boolean
\u53D8\u66F4\u8BB0\u5F55
v1.0.0
\u6DFB\u52A0
\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
infix fun Class<*>?.extends(other: Class<*>?): Boolean
\u53D8\u66F4\u8BB0\u5F55
v1.0.0
\u6DFB\u52A0
\u529F\u80FD\u63CF\u8FF0
\u5F53\u524D
Class
\u662F\u5426\u7EE7\u627F\u4E8Eother
\u3002
\u5982\u679C\u5F53\u524D Class
\u5C31\u662F other
\u4E5F\u4F1A\u8FD4\u56DE true
\u3002
\u5982\u679C\u5F53\u524D Class
\u4E3A null
\u6216 other
\u4E3A null
\u4F1A\u8FD4\u56DE false
\u3002
\u529F\u80FD\u793A\u4F8B
\u4F60\u53EF\u4EE5\u4F7F\u7528\u6B64\u65B9\u6CD5\u6765\u5224\u65AD\u4E24\u4E2A Class
\u662F\u5426\u5B58\u5728\u7EE7\u627F\u5173\u7CFB\u3002
\u793A\u4F8B\u5982\u4E0B
// \u5047\u8BBE\u4E0B\u9762\u8FD9\u4E24\u4E2A Class \u5C31\u662F\u4F60\u9700\u8981\u5224\u65AD\u7684 Class
val classA: Class<*>?
val classB: Class<*>?
// \u5224\u65AD A \u662F\u5426\u7EE7\u627F\u4E8E B
if (classA extends classB) {
// Your code here.
}
infix fun Class<*>?.notExtends(other: Class<*>?): Boolean
\u53D8\u66F4\u8BB0\u5F55
v1.0.0
\u6DFB\u52A0
\u529F\u80FD\u63CF\u8FF0
\u5F53\u524D
Class
\u662F\u5426\u4E0D\u7EE7\u627F\u4E8Eother
\u3002
\u6B64\u65B9\u6CD5\u76F8\u5F53\u4E8E extends
\u7684\u53CD\u5411\u5224\u65AD\u3002
\u529F\u80FD\u793A\u4F8B
\u4F60\u53EF\u4EE5\u4F7F\u7528\u6B64\u65B9\u6CD5\u6765\u5224\u65AD\u4E24\u4E2A Class
\u662F\u5426\u4E0D\u5B58\u5728\u7EE7\u627F\u5173\u7CFB\u3002
\u793A\u4F8B\u5982\u4E0B
// \u5047\u8BBE\u4E0B\u9762\u8FD9\u4E24\u4E2A Class \u5C31\u662F\u4F60\u9700\u8981\u5224\u65AD\u7684 Class
val classA: Class<*>?
val classB: Class<*>?
// \u5224\u65AD A \u662F\u5426\u4E0D\u7EE7\u627F\u4E8E B
if (classA notExtends classB) {
// Your code here.
}
infix fun Class<*>?.implements(other: Class<*>?): Boolean
\u53D8\u66F4\u8BB0\u5F55
v1.0.0
\u6DFB\u52A0
\u529F\u80FD\u63CF\u8FF0
\u5F53\u524D
Class
\u662F\u5426\u5B9E\u73B0\u4E86other
\u63A5\u53E3\u7C7B\u3002
\u5982\u679C\u5F53\u524D Class
\u4E3A null
\u6216 other
\u4E3A null
\u4F1A\u8FD4\u56DE false
\u3002
\u529F\u80FD\u793A\u4F8B
\u4F60\u53EF\u4EE5\u4F7F\u7528\u6B64\u65B9\u6CD5\u6765\u5224\u65AD\u4E24\u4E2A Class
\u662F\u5426\u5B58\u5728\u4F9D\u8D56\u5173\u7CFB\u3002
\u793A\u4F8B\u5982\u4E0B
// \u5047\u8BBE\u4E0B\u9762\u8FD9\u4E24\u4E2A Class \u5C31\u662F\u4F60\u9700\u8981\u5224\u65AD\u7684 Class
val classA: Class<*>?
val classB: Class<*>?
// \u5224\u65AD A \u662F\u5426\u5B9E\u73B0\u4E86 B \u63A5\u53E3\u7C7B
if (classA implements classB) {
// Your code here.
}
infix fun Class<*>?.notImplements(other: Class<*>?): Boolean
\u53D8\u66F4\u8BB0\u5F55
v1.0.0
\u6DFB\u52A0
\u529F\u80FD\u63CF\u8FF0
\u5F53\u524D
Class
\u662F\u5426\u672A\u5B9E\u73B0other
\u63A5\u53E3\u7C7B\u3002
\u6B64\u65B9\u6CD5\u76F8\u5F53\u4E8E implements
\u7684\u53CD\u5411\u5224\u65AD\u3002
\u529F\u80FD\u793A\u4F8B
\u4F60\u53EF\u4EE5\u4F7F\u7528\u6B64\u65B9\u6CD5\u6765\u5224\u65AD\u4E24\u4E2A Class
\u662F\u5426\u4E0D\u5B58\u5728\u4F9D\u8D56\u5173\u7CFB\u3002
\u793A\u4F8B\u5982\u4E0B
// \u5047\u8BBE\u4E0B\u9762\u8FD9\u4E24\u4E2A Class \u5C31\u662F\u4F60\u9700\u8981\u5224\u65AD\u7684 Class
val classA: Class<*>?
val classB: Class<*>?
// \u5224\u65AD A \u662F\u5426\u672A\u5B9E\u73B0 B \u63A5\u53E3\u7C7B
if (classA notImplements classB) {
// Your code here.
}
fun Class<*>.toJavaPrimitiveType(): Class<*>
\u53D8\u66F4\u8BB0\u5F55
v1.0.0
\u6DFB\u52A0
\u529F\u80FD\u63CF\u8FF0
\u81EA\u52A8\u8F6C\u6362\u5F53\u524D
Class
\u4E3A Java \u539F\u59CB\u7C7B\u578B (Primitive Type)\u3002
\u5982\u679C\u5F53\u524D Class
\u4E3A Java \u6216 Kotlin \u57FA\u672C\u7C7B\u578B\u5C06\u81EA\u52A8\u6267\u884C\u7C7B\u578B\u8F6C\u6362\u3002
\u5F53\u524D\u80FD\u591F\u81EA\u52A8\u8F6C\u6362\u7684\u57FA\u672C\u7C7B\u578B\u5982\u4E0B\u3002
kotlin.Unit
java.lang.Void
java.lang.Boolean
java.lang.Integer
java.lang.Float
java.lang.Double
java.lang.Long
java.lang.Short
java.lang.Character
java.lang.Byte
fun String.toClass(loader: ClassLoader?, initialize: Boolean): Class<*>
inline fun <reified T> String.toClass(loader: ClassLoader?, initialize: Boolean): Class<T>
\u53D8\u66F4\u8BB0\u5F55
v1.0.0
\u6DFB\u52A0
\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)
\u4F60\u8FD8\u53EF\u4EE5\u6307\u5B9A Class
\u7684\u76EE\u6807\u7C7B\u578B\u3002
\u793A\u4F8B\u5982\u4E0B
// \u6307\u5B9A\u7684 DemoClass \u5FC5\u987B\u5B58\u5728\u6216\u4E3A\u53EF\u8BBF\u95EE\u7684 stub
"com.example.demo.DemoClass".toClass<DemoClass>()
\u4F60\u8FD8\u53EF\u4EE5\u8BBE\u7F6E\u5728\u83B7\u53D6\u5230\u8FD9\u4E2A Class
\u65F6\u662F\u5426\u81EA\u52A8\u6267\u884C\u5176\u9ED8\u8BA4\u7684\u9759\u6001\u65B9\u6CD5\u5757\uFF0C\u9ED8\u8BA4\u60C5\u51B5\u4E0B\u4E0D\u4F1A\u6267\u884C\u3002
\u793A\u4F8B\u5982\u4E0B
// \u83B7\u53D6\u5E76\u6267\u884C DemoClass \u9ED8\u8BA4\u7684\u9759\u6001\u65B9\u6CD5\u5757
"com.example.demo.DemoClass".toClass(initialize = true)
\u9ED8\u8BA4\u7684\u9759\u6001\u65B9\u6CD5\u5757\u5728 Java \u4E2D\u4F7F\u7528\u5982\u4E0B\u65B9\u5F0F\u5B9A\u4E49\u3002
\u793A\u4F8B\u5982\u4E0B
public class DemoClass {
static {
// \u8FD9\u91CC\u662F\u9759\u6001\u65B9\u6CD5\u5757\u7684\u5185\u5BB9
}
public DemoClass() {
// ...
}
}
fun String.toClassOrNull(loader: ClassLoader?, initialize: Boolean): Class<*>?
inline fun <reified T> String.toClassOrNull(loader: ClassLoader?, initialize: Boolean): Class<T>?
\u53D8\u66F4\u8BB0\u5F55
v1.0.0
\u6DFB\u52A0
\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?, initialize: Boolean): Class<T>
\u53D8\u66F4\u8BB0\u5F55
v1.0.0
\u6DFB\u52A0
\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.0
\u6DFB\u52A0
\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.0
\u6DFB\u52A0
\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.0
\u6DFB\u52A0
\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.0
\u6DFB\u52A0
\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.0
\u6DFB\u52A0
\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.0.0
\u6DFB\u52A0
\u529F\u80FD\u63CF\u8FF0
\u67E5\u627E
Class
\u4E2D\u5339\u914D\u7684\u63CF\u8FF0\u7B26\u3002
inline fun Class<*>.field(initiate: FieldConditions): FieldFinder.Result
\u53D8\u66F4\u8BB0\u5F55
v1.0.0
\u6DFB\u52A0
\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.0
\u6DFB\u52A0
\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.0
\u6DFB\u52A0
\u529F\u80FD\u63CF\u8FF0
\u67E5\u627E\u5E76\u5F97\u5230\u6784\u9020\u65B9\u6CD5\u3002
fun Class<*>.generic(): GenericClass?
\u53D8\u66F4\u8BB0\u5F55
v1.0.0
\u6DFB\u52A0
\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.0.0
\u6DFB\u52A0
\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.0
\u6DFB\u52A0
\u529F\u80FD\u63CF\u8FF0
\u83B7\u5F97\u5F53\u524D\u5B9E\u4F8B\u7684\u7C7B\u64CD\u4F5C\u5BF9\u8C61\u3002
inline fun Class<*>.buildOf(vararg args: Any?, initiate: ConstructorConditions): Any?
inline fun <T> Class<*>.buildOf(vararg args: Any?, initiate: ConstructorConditions): T?
\u53D8\u66F4\u8BB0\u5F55
v1.0.0
\u6DFB\u52A0
\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(isAccessible: Boolean, result: (index: Int, method: Method) -> Unit)
\u53D8\u66F4\u8BB0\u5F55
v1.0.0
\u6DFB\u52A0
\u529F\u80FD\u63CF\u8FF0
\u904D\u5386\u5F53\u524D\u7C7B\u4E2D\u7684\u6240\u6709\u65B9\u6CD5\u3002
inline fun Class<*>.allConstructors(isAccessible: Boolean, result: (index: Int, constructor: Constructor<*>) -> Unit)
\u53D8\u66F4\u8BB0\u5F55
v1.0.0
\u6DFB\u52A0
\u529F\u80FD\u63CF\u8FF0
\u904D\u5386\u5F53\u524D\u7C7B\u4E2D\u7684\u6240\u6709\u6784\u9020\u65B9\u6CD5\u3002
inline fun Class<*>.allFields(isAccessible: Boolean, result: (index: Int, field: Field) -> Unit)
\u53D8\u66F4\u8BB0\u5F55
v1.0.0
\u6DFB\u52A0
\u529F\u80FD\u63CF\u8FF0
`,235),p=[e];function c(t,r){return a(),n("div",null,p)}const i=s(o,[["render",c],["__file","ReflectionFactory.html.vue"]]);export{i as default};\u904D\u5386\u5F53\u524D\u7C7B\u4E2D\u7684\u6240\u6709\u53D8\u91CF\u3002