Added classOf inline function in ReflectionFactory

This commit is contained in:
2022-08-09 00:32:14 +08:00
parent cc9225e7d7
commit 8ecc3a7be2
2 changed files with 51 additions and 1 deletions

View File

@@ -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 <reified T> classOf(loader: ClassLoader?): Class<*>
```
**变更记录**
`v1.0.93` `新增`
**功能描述**
> 通过 `T` 得到其 `Class` 实例并转换为实体类。
**功能示例**
我们要获取一个 `Class``Kotlin` 下不通过反射时应该这样做。
> 示例如下
>
```kotlin
DemoClass::class.java
```
现在,你可以直接 `cast` 一个实例并获取它的 `Class` 对象,必须在当前 `ClassLoader` 下存在。
> 示例如下
```kotlin
classOf<DemoClass>()
```
若目标存在的 `Class``stub`,通过这种方式,你还可以自定义 `Class` 所在的 `ClassLoader`
> 示例如下
```kotlin
val customClassLoader: ClassLoader? = ... // 假设这个就是你的 ClassLoader
classOf<DemoClass>(customClassLoader)
```
### hasClass [method]

View File

@@ -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 <reified T> classOf(loader: ClassLoader? = null) = classOf(T::class.java.name, loader)
/**
* 通过字符串查找类是否存在
* @param loader [Class] 所在的 [ClassLoader] - 不填使用默认 [ClassLoader]