Modify move classOf to toClass function in ReflectionFactory

This commit is contained in:
2022-09-06 01:52:18 +08:00
parent 5eff2262c5
commit c20b297006
10 changed files with 75 additions and 56 deletions

View File

@@ -551,7 +551,7 @@ fun findClass(vararg name: String, loader: ClassLoader?): VariousClass
> 通过完整包名+名称查找需要被 Hook 的 `Class`。
!> 使用此方法会得到一个 `HookClass` 仅用于 Hook若想查找 `Class` 请使用 `classOf``toAppClass` 功能。
!> 使用此方法会得到一个 `HookClass` 仅用于 Hook若想查找 `Class` 请使用 `toClass``toAppClass` 功能。
**功能示例**

View File

@@ -108,28 +108,38 @@ val Class<*>.hasExtends: Boolean
> 当前 `Class` 是否有继承关系,父类是 `Any` 将被认为没有继承关系。
### classOf *- method*
```kotlin
fun classOf(name: String, loader: ClassLoader?): Class<*>
```
### ~~classOf *- method*~~ <!-- {docsify-ignore} -->
**变更记录**
`v1.0` `添加`
`v1.0.93` `移除`
请转到 `toClass(...)` 方法
### String.toClass *- ext-method*
```kotlin
fun String.toClass(loader: ClassLoader?): Class<*>
```
**变更记录**
`v1.0.93` `新增`
**功能描述**
> 通过字符串使用指定的 `ClassLoader` 转换为实体类。
> 通过字符串类名转换为 `loader` 中的实体类。
**功能示例**
你可以直接填写你要查找的目标 `Class`,必须在当前 `ClassLoader` 下存在。
你可以直接填写你要查找的目标 `Class`,必须在默认 `ClassLoader` 下存在。
> 示例如下
```kotlin
classOf(name = "com.example.demo.DemoClass")
"com.example.demo.DemoClass".toClass()
```
你还可以自定义 `Class` 所在的 `ClassLoader`
@@ -138,7 +148,7 @@ classOf(name = "com.example.demo.DemoClass")
```kotlin
val customClassLoader: ClassLoader? = ... // 假设这个就是你的 ClassLoader
classOf(name = "com.example.demo.DemoClass", customClassLoader)
"com.example.demo.DemoClass".toClass(customClassLoader)
```
### classOf *- method*

View File

@@ -660,7 +660,7 @@ Test(true).doTask("task_name")
> 示例如下
```kotlin
classOf("com.demo.Test")
"com.demo.Test".toClass()
.getDeclaredConstructor(Boolean::class.java)
.apply { isAccessible = true }
.newInstance(true)
@@ -679,7 +679,7 @@ classOf("com.demo.Test")
> 示例如下
```kotlin
classOf("com.demo.Test").buildOfAny(true) { param(BooleanType) }?.current {
"com.demo.Test".toClass().buildOfAny(true) { param(BooleanType) }?.current {
method {
name = "doTask"
param(StringType)
@@ -916,7 +916,7 @@ public class BTest {
```kotlin
// 首先查询到这个 Class
val currentClass = if("com.demo.ATest".hasClass) classOf("com.demo.ATest") else classOf("com.demo.BTest")
val currentClass = if("com.demo.ATest".hasClass()) "com.demo.ATest".toClass() else "com.demo.BTest".toClass()
// 然后再查询这个方法并调用
currentClass.method {
name = "doTask"