Added getOrNull function in VariousClass

This commit is contained in:
2022-09-27 19:27:53 +08:00
parent 16a82aa756
commit a564740849
3 changed files with 31 additions and 2 deletions

View File

@@ -30,4 +30,22 @@ fun get(loader: ClassLoader? = null): Class<*>
> 获取匹配的实体类。
使用当前 `loader` 装载目标 `Class`。
使用当前 `loader` 装载目标 `Class`。
## getOrNull <span class="symbol">- method</span>
```kotlin:no-line-numbers
fun getOrNull(loader: ClassLoader? = null): Class<*>?
```
**变更记录**
`v1.1.0` `新增`
**功能描述**
> 获取匹配的实体类。
使用当前 `loader` 装载目标 `Class`。
匹配不到 `Class` 会返回 `null`,不会抛出异常。

View File

@@ -56,6 +56,17 @@ class VariousClass(vararg var name: String) {
return finalClass ?: error("VariousClass match failed of those $this")
}
/**
* 获取匹配的实体类
*
* - 使用当前 [loader] 装载目标 [Class]
*
* 匹配不到 [Class] 会返回 null - 不会抛出异常
* @param loader 当前 [ClassLoader] - 若留空使用默认 [ClassLoader]
* @return [Class] or null
*/
fun getOrNull(loader: ClassLoader? = null) = runCatching { get(loader) }.getOrNull()
override fun toString(): String {
var result = ""
return if (name.isNotEmpty()) {

View File

@@ -380,7 +380,7 @@ open class PackageParam internal constructor(@PublishedApi internal var wrapper:
* @param loader [Class] 所在的 [ClassLoader] - 不填使用 [appClassLoader]
* @return [Class] or null
*/
fun VariousClass.toClassOrNull(loader: ClassLoader? = appClassLoader) = runCatching { toClass(loader) }.getOrNull()
fun VariousClass.toClassOrNull(loader: ClassLoader? = appClassLoader) = getOrNull(loader)
/**
* 通过字符串类名查找是否存在