Added String.toClassOrNull VariousClass.toClassOrNull function in ReflectionFactory and PackageParam

This commit is contained in:
2022-09-21 21:18:58 +08:00
parent 00b4119285
commit 930f4166a4
4 changed files with 73 additions and 0 deletions

View File

@@ -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] - 默认空 - 可不填

View File

@@ -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]