Modify add "initialize" param in classOf, toClass, toClassOrNull, get, getOrNull function in ReflectionFactory, PackageParam, VariousClass

This commit is contained in:
2023-01-01 22:05:03 +08:00
parent 48ea8c4ebc
commit f31168b5ed
10 changed files with 225 additions and 51 deletions

View File

@@ -31,13 +31,17 @@ class VariousClass(private vararg val name: String)
## get <span class="symbol">- method</span>
```kotlin:no-line-numbers
fun get(loader: ClassLoader? = null): Class<*>
fun get(loader: ClassLoader? = null, initialize: Boolean): Class<*>
```
**Change Records**
`v1.0.70` `added`
`v1.1.5` `modified`
新增 `initialize` 参数
**Function Illustrate**
> 获取匹配的实体类。
@@ -47,13 +51,17 @@ fun get(loader: ClassLoader? = null): Class<*>
## getOrNull <span class="symbol">- method</span>
```kotlin:no-line-numbers
fun getOrNull(loader: ClassLoader? = null): Class<*>?
fun getOrNull(loader: ClassLoader? = null, initialize: Boolean): Class<*>?
```
**Change Records**
`v1.1.0` `added`
`v1.1.5` `modified`
新增 `initialize` 参数
**Function Illustrate**
> 获取匹配的实体类。

View File

@@ -409,11 +409,11 @@ fun Class<*>.toJavaPrimitiveType(): Class<*>
## String.toClass <span class="symbol">- ext-method</span>
```kotlin:no-line-numbers
fun String.toClass(loader: ClassLoader?): Class<*>
fun String.toClass(loader: ClassLoader?, initialize: Boolean): Class<*>
```
```kotlin:no-line-numbers
inline fun <reified T> String.toClass(loader: ClassLoader?): Class<T>
inline fun <reified T> String.toClass(loader: ClassLoader?, initialize: Boolean): Class<T>
```
**Change Records**
@@ -424,6 +424,8 @@ inline fun <reified T> String.toClass(loader: ClassLoader?): Class<T>
新增泛型返回值 `Class<T>` 方法
新增 `initialize` 参数
**Function Illustrate**
> 通过字符串类名转换为 `loader` 中的实体类。
@@ -456,14 +458,40 @@ val customClassLoader: ClassLoader? = ... // 假设这个就是你的 ClassLoade
"com.example.demo.DemoClass".toClass<DemoClass>()
```
你还可以设置在获取到这个 `Class` 时是否自动执行其默认的静态方法块,默认情况下不会执行。
> The following example
```kotlin
// 获取并执行 DemoClass 默认的静态方法块
"com.example.demo.DemoClass".toClass(initialize = true)
```
默认的静态方法块在 Java 中使用如下方式定义。
> The following example
```java:no-line-numbers
public class DemoClass {
static {
// 这里是静态方法块的内容
}
public DemoClass() {
// ...
}
}
```
## String.toClassOrNull <span class="symbol">- ext-method</span>
```kotlin:no-line-numbers
fun String.toClassOrNull(loader: ClassLoader?): Class<*>?
fun String.toClassOrNull(loader: ClassLoader?, initialize: Boolean): Class<*>?
```
```kotlin:no-line-numbers
inline fun <reified T> String.toClassOrNull(loader: ClassLoader?): Class<T>?
inline fun <reified T> String.toClassOrNull(loader: ClassLoader?, initialize: Boolean): Class<T>?
```
**Change Records**
@@ -474,6 +502,8 @@ inline fun <reified T> String.toClassOrNull(loader: ClassLoader?): Class<T>?
新增泛型返回值 `Class<T>` 方法
新增 `initialize` 参数
**Function Illustrate**
> 通过字符串类名转换为 `loader` 中的实体类。
@@ -487,7 +517,7 @@ inline fun <reified T> String.toClassOrNull(loader: ClassLoader?): Class<T>?
## classOf <span class="symbol">- method</span>
```kotlin:no-line-numbers
inline fun <reified T> classOf(loader: ClassLoader?): Class<T>
inline fun <reified T> classOf(loader: ClassLoader?, initialize: Boolean): Class<T>
```
**Change Records**
@@ -498,6 +528,8 @@ inline fun <reified T> classOf(loader: ClassLoader?): Class<T>
将返回类型由 `Class<*>` cast 为 `Class<T>`
新增 `initialize` 参数
**Function Illustrate**
> 通过 `T` 得到其 `Class` 实例并转换为实体类。

View File

@@ -632,15 +632,15 @@ inline fun searchClass(name: String, async: Boolean, initiate: ClassConditions):
## String+VariousClass.toClass <span class="symbol">- i-ext-method</span>
```kotlin:no-line-numbers
fun String.toClass(loader: ClassLoader?): Class<*>
fun String.toClass(loader: ClassLoader?, initialize: Boolean): Class<*>
```
```kotlin:no-line-numbers
inline fun <reified T> String.toClass(loader: ClassLoader?): Class<T>
inline fun <reified T> String.toClass(loader: ClassLoader?, initialize: Boolean): Class<T>
```
```kotlin:no-line-numbers
fun VariousClass.toClass(loader: ClassLoader?): Class<*>
fun VariousClass.toClass(loader: ClassLoader?, initialize: Boolean): Class<*>
```
**Change Records**
@@ -651,6 +651,8 @@ fun VariousClass.toClass(loader: ClassLoader?): Class<*>
新增泛型返回值 `Class<T>` 方法
新增 `initialize` 参数
**Function Illustrate**
> 通过字符串类名、`VariousClass` 转换为 `loader` 中的实体类。
@@ -685,6 +687,32 @@ val customClassLoader: ClassLoader? = ... // 假设这个就是你的 ClassLoade
"com.example.demo.DemoClass".toClass<DemoClass>()
```
你还可以设置在获取到这个 `Class` 时是否自动执行其默认的静态方法块,默认情况下不会执行。
> The following example
```kotlin
// 获取并执行 DemoClass 默认的静态方法块
"com.example.demo.DemoClass".toClass(initialize = true)
```
默认的静态方法块在 Java 中使用如下方式定义。
> The following example
```java:no-line-numbers
public class DemoClass {
static {
// 这里是静态方法块的内容
}
public DemoClass() {
// ...
}
}
```
你还可以创建一个 `VariousClass`,并转换为实体类。
`VariousClass` 会枚举所有设置的 `Class` 并最终获得第一个存在的 `Class`。
@@ -707,15 +735,15 @@ VariousClass("com.example.demo.DemoClass1", "com.example.demo.DemoClass2").toCla
## String+VariousClass.toClassOrNull <span class="symbol">- i-ext-method</span>
```kotlin:no-line-numbers
fun String.toClassOrNull(loader: ClassLoader?): Class<*>?
fun String.toClassOrNull(loader: ClassLoader?, initialize: Boolean): Class<*>?
```
```kotlin:no-line-numbers
inline fun <reified T> String.toClassOrNull(loader: ClassLoader?): Class<T>?
inline fun <reified T> String.toClassOrNull(loader: ClassLoader?, initialize: Boolean): Class<T>?
```
```kotlin:no-line-numbers
fun VariousClass.toClassOrNull(loader: ClassLoader?): Class<*>?
fun VariousClass.toClassOrNull(loader: ClassLoader?, initialize: Boolean): Class<*>?
```
**Change Records**
@@ -726,6 +754,8 @@ fun VariousClass.toClassOrNull(loader: ClassLoader?): Class<*>?
新增泛型返回值 `Class<T>` 方法
新增 `initialize` 参数
**Function Illustrate**
> 通过字符串类名、`VariousClass` 转换为 `loader` 中的实体类。

View File

@@ -23,13 +23,17 @@ class VariousClass(private vararg val name: String)
## get <span class="symbol">- method</span>
```kotlin:no-line-numbers
fun get(loader: ClassLoader? = null): Class<*>
fun get(loader: ClassLoader? = null, initialize: Boolean): Class<*>
```
**变更记录**
`v1.0.70` `新增`
`v1.1.5` `修改`
新增 `initialize` 参数
**功能描述**
> 获取匹配的实体类。
@@ -39,13 +43,17 @@ fun get(loader: ClassLoader? = null): Class<*>
## getOrNull <span class="symbol">- method</span>
```kotlin:no-line-numbers
fun getOrNull(loader: ClassLoader? = null): Class<*>?
fun getOrNull(loader: ClassLoader? = null, initialize: Boolean): Class<*>?
```
**变更记录**
`v1.1.0` `新增`
`v1.1.5` `修改`
新增 `initialize` 参数
**功能描述**
> 获取匹配的实体类。

View File

@@ -401,11 +401,11 @@ fun Class<*>.toJavaPrimitiveType(): Class<*>
## String.toClass <span class="symbol">- ext-method</span>
```kotlin:no-line-numbers
fun String.toClass(loader: ClassLoader?): Class<*>
fun String.toClass(loader: ClassLoader?, initialize: Boolean): Class<*>
```
```kotlin:no-line-numbers
inline fun <reified T> String.toClass(loader: ClassLoader?): Class<T>
inline fun <reified T> String.toClass(loader: ClassLoader?, initialize: Boolean): Class<T>
```
**变更记录**
@@ -416,6 +416,8 @@ inline fun <reified T> String.toClass(loader: ClassLoader?): Class<T>
新增泛型返回值 `Class<T>` 方法
新增 `initialize` 参数
**功能描述**
> 通过字符串类名转换为 `loader` 中的实体类。
@@ -448,14 +450,40 @@ val customClassLoader: ClassLoader? = ... // 假设这个就是你的 ClassLoade
"com.example.demo.DemoClass".toClass<DemoClass>()
```
你还可以设置在获取到这个 `Class` 时是否自动执行其默认的静态方法块,默认情况下不会执行。
> 示例如下
```kotlin
// 获取并执行 DemoClass 默认的静态方法块
"com.example.demo.DemoClass".toClass(initialize = true)
```
默认的静态方法块在 Java 中使用如下方式定义。
> 示例如下
```java:no-line-numbers
public class DemoClass {
static {
// 这里是静态方法块的内容
}
public DemoClass() {
// ...
}
}
```
## String.toClassOrNull <span class="symbol">- ext-method</span>
```kotlin:no-line-numbers
fun String.toClassOrNull(loader: ClassLoader?): Class<*>?
fun String.toClassOrNull(loader: ClassLoader?, initialize: Boolean): Class<*>?
```
```kotlin:no-line-numbers
inline fun <reified T> String.toClassOrNull(loader: ClassLoader?): Class<T>?
inline fun <reified T> String.toClassOrNull(loader: ClassLoader?, initialize: Boolean): Class<T>?
```
**变更记录**
@@ -466,6 +494,8 @@ inline fun <reified T> String.toClassOrNull(loader: ClassLoader?): Class<T>?
新增泛型返回值 `Class<T>` 方法
新增 `initialize` 参数
**功能描述**
> 通过字符串类名转换为 `loader` 中的实体类。
@@ -479,7 +509,7 @@ inline fun <reified T> String.toClassOrNull(loader: ClassLoader?): Class<T>?
## classOf <span class="symbol">- method</span>
```kotlin:no-line-numbers
inline fun <reified T> classOf(loader: ClassLoader?): Class<T>
inline fun <reified T> classOf(loader: ClassLoader?, initialize: Boolean): Class<T>
```
**变更记录**
@@ -490,6 +520,8 @@ inline fun <reified T> classOf(loader: ClassLoader?): Class<T>
将返回类型由 `Class<*>` cast 为 `Class<T>`
新增 `initialize` 参数
**功能描述**
> 通过 `T` 得到其 `Class` 实例并转换为实体类。

View File

@@ -624,15 +624,15 @@ inline fun searchClass(name: String, async: Boolean, initiate: ClassConditions):
## String+VariousClass.toClass <span class="symbol">- i-ext-method</span>
```kotlin:no-line-numbers
fun String.toClass(loader: ClassLoader?): Class<*>
fun String.toClass(loader: ClassLoader?, initialize: Boolean): Class<*>
```
```kotlin:no-line-numbers
inline fun <reified T> String.toClass(loader: ClassLoader?): Class<T>
inline fun <reified T> String.toClass(loader: ClassLoader?, initialize: Boolean): Class<T>
```
```kotlin:no-line-numbers
fun VariousClass.toClass(loader: ClassLoader?): Class<*>
fun VariousClass.toClass(loader: ClassLoader?, initialize: Boolean): Class<*>
```
**变更记录**
@@ -643,6 +643,8 @@ fun VariousClass.toClass(loader: ClassLoader?): Class<*>
新增泛型返回值 `Class<T>` 方法
新增 `initialize` 参数
**功能描述**
> 通过字符串类名、`VariousClass` 转换为 `loader` 中的实体类。
@@ -677,6 +679,32 @@ val customClassLoader: ClassLoader? = ... // 假设这个就是你的 ClassLoade
"com.example.demo.DemoClass".toClass<DemoClass>()
```
你还可以设置在获取到这个 `Class` 时是否自动执行其默认的静态方法块,默认情况下不会执行。
> 示例如下
```kotlin
// 获取并执行 DemoClass 默认的静态方法块
"com.example.demo.DemoClass".toClass(initialize = true)
```
默认的静态方法块在 Java 中使用如下方式定义。
> 示例如下
```java:no-line-numbers
public class DemoClass {
static {
// 这里是静态方法块的内容
}
public DemoClass() {
// ...
}
}
```
你还可以创建一个 `VariousClass`,并转换为实体类。
`VariousClass` 会枚举所有设置的 `Class` 并最终获得第一个存在的 `Class`。
@@ -699,15 +727,15 @@ VariousClass("com.example.demo.DemoClass1", "com.example.demo.DemoClass2").toCla
## String+VariousClass.toClassOrNull <span class="symbol">- i-ext-method</span>
```kotlin:no-line-numbers
fun String.toClassOrNull(loader: ClassLoader?): Class<*>?
fun String.toClassOrNull(loader: ClassLoader?, initialize: Boolean): Class<*>?
```
```kotlin:no-line-numbers
inline fun <reified T> String.toClassOrNull(loader: ClassLoader?): Class<T>?
inline fun <reified T> String.toClassOrNull(loader: ClassLoader?, initialize: Boolean): Class<T>?
```
```kotlin:no-line-numbers
fun VariousClass.toClassOrNull(loader: ClassLoader?): Class<*>?
fun VariousClass.toClassOrNull(loader: ClassLoader?, initialize: Boolean): Class<*>?
```
**变更记录**
@@ -718,6 +746,8 @@ fun VariousClass.toClassOrNull(loader: ClassLoader?): Class<*>?
新增泛型返回值 `Class<T>` 方法
新增 `initialize` 参数
**功能描述**
> 通过字符串类名、`VariousClass` 转换为 `loader` 中的实体类。