mirror of
https://github.com/HighCapable/YukiHookAPI.git
synced 2025-09-04 09:45:19 +08:00
Added String.toClassOrNull VariousClass.toClassOrNull function in ReflectionFactory and PackageParam
This commit is contained in:
@@ -250,6 +250,26 @@ val customClassLoader: ClassLoader? = ... // 假设这个就是你的 ClassLoade
|
||||
"com.example.demo.DemoClass".toClass(customClassLoader)
|
||||
```
|
||||
|
||||
## String.toClassOrNull <span class="symbol">- ext-method</span>
|
||||
|
||||
```kotlin:no-line-numbers
|
||||
fun String.toClassOrNull(loader: ClassLoader?): Class<*>?
|
||||
```
|
||||
|
||||
**变更记录**
|
||||
|
||||
`v1.1.0` `新增`
|
||||
|
||||
**功能描述**
|
||||
|
||||
> 通过字符串类名转换为 `loader` 中的实体类。
|
||||
|
||||
找不到 `Class` 会返回 `null`,不会抛出异常。
|
||||
|
||||
**功能示例**
|
||||
|
||||
用法请参考 [String.toClass](#string-toclass-ext-method) 方法。
|
||||
|
||||
## classOf <span class="symbol">- method</span>
|
||||
|
||||
```kotlin:no-line-numbers
|
||||
|
@@ -574,6 +574,32 @@ val customClassLoader: ClassLoader? = ... // 假设这个就是你的 ClassLoade
|
||||
VariousClass("com.example.demo.DemoClass1", "com.example.demo.DemoClass2").toClass(customClassLoader)
|
||||
```
|
||||
|
||||
## String+VariousClass.toClassOrNull <span class="symbol">- i-ext-method</span>
|
||||
|
||||
```kotlin:no-line-numbers
|
||||
fun String.toClassOrNull(loader: ClassLoader?): Class<*>?
|
||||
```
|
||||
|
||||
```kotlin:no-line-numbers
|
||||
fun VariousClass.toClassOrNull(loader: ClassLoader?): Class<*>?
|
||||
```
|
||||
|
||||
**变更记录**
|
||||
|
||||
`v1.1.0` `新增`
|
||||
|
||||
**功能描述**
|
||||
|
||||
> 通过字符串类名、`VariousClass` 转换为 `loader` 中的实体类。
|
||||
|
||||
默认使用当前 `appClassLoader` 装载目标 `Class`。
|
||||
|
||||
找不到 `Class` 会返回 `null`,不会抛出异常。
|
||||
|
||||
**功能示例**
|
||||
|
||||
用法请参考 [String+VariousClass.toClass](#string-variousclass-toclass-i-ext-method) 方法。
|
||||
|
||||
## String.hasClass <span class="symbol">- i-ext-method</span>
|
||||
|
||||
```kotlin:no-line-numbers
|
||||
|
@@ -111,6 +111,15 @@ fun classOf(name: String, loader: ClassLoader? = null) = name.toClass(loader)
|
||||
*/
|
||||
fun String.toClass(loader: ClassLoader? = null) = ReflectionTool.findClassByName(name = this, loader)
|
||||
|
||||
/**
|
||||
* 通过字符串类名转换为 [loader] 中的实体类
|
||||
*
|
||||
* 找不到 [Class] 会返回 null - 不会抛出异常
|
||||
* @param loader [Class] 所在的 [ClassLoader] - 默认空 - 不填使用默认 [ClassLoader]
|
||||
* @return [Class] or null
|
||||
*/
|
||||
fun String.toClassOrNull(loader: ClassLoader? = null) = runCatching { toClass(loader) }.getOrNull()
|
||||
|
||||
/**
|
||||
* 通过 [T] 得到其 [Class] 实例并转换为实体类
|
||||
* @param loader [Class] 所在的 [ClassLoader] - 默认空 - 可不填
|
||||
|
@@ -356,6 +356,15 @@ open class PackageParam internal constructor(@PublishedApi internal var wrapper:
|
||||
*/
|
||||
fun String.toClass(loader: ClassLoader? = appClassLoader) = ReflectionTool.findClassByName(name = this, loader)
|
||||
|
||||
/**
|
||||
* 通过字符串类名转换为 [loader] 中的实体类
|
||||
*
|
||||
* 找不到 [Class] 会返回 null - 不会抛出异常
|
||||
* @param loader [Class] 所在的 [ClassLoader] - 不填使用 [appClassLoader]
|
||||
* @return [Class] or null
|
||||
*/
|
||||
fun String.toClassOrNull(loader: ClassLoader? = appClassLoader) = runCatching { toClass(loader) }.getOrNull()
|
||||
|
||||
/**
|
||||
* [VariousClass] 转换为 [loader] 中的实体类
|
||||
* @param loader [Class] 所在的 [ClassLoader] - 不填使用 [appClassLoader]
|
||||
@@ -364,6 +373,15 @@ open class PackageParam internal constructor(@PublishedApi internal var wrapper:
|
||||
*/
|
||||
fun VariousClass.toClass(loader: ClassLoader? = appClassLoader) = get(loader)
|
||||
|
||||
/**
|
||||
* [VariousClass] 转换为 [loader] 中的实体类
|
||||
*
|
||||
* 匹配不到 [Class] 会返回 null - 不会抛出异常
|
||||
* @param loader [Class] 所在的 [ClassLoader] - 不填使用 [appClassLoader]
|
||||
* @return [Class] or null
|
||||
*/
|
||||
fun VariousClass.toClassOrNull(loader: ClassLoader? = appClassLoader) = runCatching { toClass(loader) }.getOrNull()
|
||||
|
||||
/**
|
||||
* 通过字符串类名查找是否存在
|
||||
* @param loader [Class] 所在的 [ClassLoader] - 不填使用 [appClassLoader]
|
||||
|
Reference in New Issue
Block a user