diff --git a/docs/api/public/ReflectionFactory.md b/docs/api/public/ReflectionFactory.md index f82d12bf..48820e2b 100644 --- a/docs/api/public/ReflectionFactory.md +++ b/docs/api/public/ReflectionFactory.md @@ -81,7 +81,49 @@ classOf(name = "com.example.demo.DemoClass") > 示例如下 ```kotlin -classOf(name = "com.example.demo.DemoClass", classLoader) +val customClassLoader: ClassLoader? = ... // 假设这个就是你的 ClassLoader +classOf(name = "com.example.demo.DemoClass", customClassLoader) +``` + +### classOf [method] + +```kotlin +inline fun classOf(loader: ClassLoader?): Class<*> +``` + +**变更记录** + +`v1.0.93` `新增` + +**功能描述** + +> 通过 `T` 得到其 `Class` 实例并转换为实体类。 + +**功能示例** + +我们要获取一个 `Class` 在 `Kotlin` 下不通过反射时应该这样做。 + +> 示例如下 +> +```kotlin +DemoClass::class.java +``` + +现在,你可以直接 `cast` 一个实例并获取它的 `Class` 对象,必须在当前 `ClassLoader` 下存在。 + +> 示例如下 + +```kotlin +classOf() +``` + +若目标存在的 `Class` 为 `stub`,通过这种方式,你还可以自定义 `Class` 所在的 `ClassLoader`。 + +> 示例如下 + +```kotlin +val customClassLoader: ClassLoader? = ... // 假设这个就是你的 ClassLoader +classOf(customClassLoader) ``` ### hasClass [method] diff --git a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/factory/ReflectionFactory.kt b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/factory/ReflectionFactory.kt index b3f08755..ac462559 100644 --- a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/factory/ReflectionFactory.kt +++ b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/factory/ReflectionFactory.kt @@ -71,6 +71,14 @@ fun classOf(name: String, loader: ClassLoader? = null): Class<*> { } } +/** + * 通过 [T] 得到其 [Class] 实例并转换为实体类 + * @param loader [Class] 所在的 [ClassLoader] - 默认空 - 可不填 + * @return [Class] + * @throws NoClassDefFoundError 如果找不到 [Class] 或设置了错误的 [ClassLoader] + */ +inline fun classOf(loader: ClassLoader? = null) = classOf(T::class.java.name, loader) + /** * 通过字符串查找类是否存在 * @param loader [Class] 所在的 [ClassLoader] - 不填使用默认 [ClassLoader]