feat(stream): 优化 SuperStream 的 toArray 方法实现- 调整 toArray 方法,支持传入 Class 参数以正确创建泛型数组
- 原无参 toArray 方法改为返回 Object[],避免类型转换异常
- 移除对 ForEach 工具类的依赖
- 提升流处理中数组转换的灵活性与安全性

```

```
feat(collection): 改进 toArray 工具方法支持泛型数组创建

- 新增基于 reified 泛型的 toArray 扩展方法,自动推断数组类型
- 添加带 Class 参数的 toArray 重载方法,用于明确指定元素类型
- 处理空列表时直接返回空数组,避免后续操作异常

```

```
build(gradle): 升级 dokka 插件版本并更新项目依赖- 将 org.jetbrains.dokka 插件升级至 2.1.0-Beta 版本
- 添加 jna5.17.0 依赖用于本地库调用支持
- 引入 mybatis-plus-core 3.0.1 编译依赖
- 更新项目版本号从 4.1.7 至 4.1.8

```
This commit is contained in:
Armamem0t 2025-09-21 14:37:22 +08:00
parent 5eed682aa1
commit 683aeb2c7f
Signed by: minglipro
GPG Key ID: 5F355A77B22AA93B
5 changed files with 30 additions and 25 deletions

View File

@ -16,7 +16,7 @@
* ProjectName mingli-utils
* ModuleName mingli-utils
* CurrentFile build.gradle.kts
* LastUpdate 2025-09-20 14:16:07
* LastUpdate 2025-09-20 22:30:57
* UpdateUser MingLiPro
*/
@ -30,7 +30,7 @@ plugins {
`java-library`
`maven-publish`
kotlin("jvm") version "2.2.20"
id("org.jetbrains.dokka") version "2.0.0"
id("org.jetbrains.dokka") version "2.1.0-Beta"
}
val GROUPSID = project.properties["GROUPSID"] as String
val VERSIONS = project.properties["VERSIONS"] as String
@ -77,7 +77,9 @@ dependencies {
compileOnly("com.google.code.gson:gson:2.13.1")
compileOnly("org.mybatis:mybatis:3.5.19")
compileOnly("com.alibaba.fastjson2:fastjson2:2.0.58")
compileOnly("com.baomidou:mybatis-plus-core:3.0.1")
compileOnly("net.java.dev.jna:jna:5.17.0")
}

View File

@ -16,13 +16,13 @@
# ProjectName mingli-utils
# ModuleName mingli-utils
# CurrentFile gradle.properties
# LastUpdate 2025-09-20 14:22:07
# LastUpdate 2025-09-20 16:03:35
# UpdateUser MingLiPro
#
JDKVERSIONS=1.8
GROUPSID=com.mingliqiye.utils
ARTIFACTID=mingli-utils
VERSIONS=4.1.7
VERSIONS=4.1.8
signing.keyId=B22AA93B
signing.password=
signing.secretKeyRingFile=secret.gpg

View File

@ -16,14 +16,13 @@
* ProjectName mingli-utils
* ModuleName mingli-utils.main
* CurrentFile SuperStream.java
* LastUpdate 2025-09-20 13:24:35
* LastUpdate 2025-09-21 14:22:13
* UpdateUser MingLiPro
*/
package com.mingliqiye.utils.stream;
import com.mingliqiye.utils.collection.Collections;
import com.mingliqiye.utils.foreach.ForEach;
import com.mingliqiye.utils.functions.P1Function;
import com.mingliqiye.utils.functions.P2Function;
import org.jetbrains.annotations.NotNull;
@ -887,16 +886,13 @@ public class SuperStream<T> implements Stream<T> {
*/
@NotNull
@SuppressWarnings("unchecked")
public T[] toArray() {
List<T> list = toAList();
if (list.isEmpty()) {
throw new StreamEmptyException("Stream is empty");
}
T[] items = (T[]) Array.newInstance(list.get(0).getClass(), list.size());
ForEach.forEach(list, (v, i) -> {
items[i] = v;
});
return items;
public T[] toArray(Class<T> clazz) {
return stream.toArray(i -> (T[]) Array.newInstance(clazz, i));
}
@NotNull
public Object[] toArray() {
return stream.toArray();
}
/**

View File

@ -16,7 +16,7 @@
* ProjectName mingli-utils
* ModuleName mingli-utils.main
* CurrentFile Collection.kt
* LastUpdate 2025-09-20 14:03:46
* LastUpdate 2025-09-21 14:36:57
* UpdateUser MingLiPro
*/
@ -980,7 +980,14 @@ fun toArray(list: List<Char>): CharArray {
* @param list 输入的 List
* @return 转换后的数组
*/
fun <T> toArray(list: List<T>): Array<T> {
inline fun <reified T> toArray(list: List<T>): Array<T> {
if (list.isEmpty())
return arrayOf<T>()
return SuperStream.of<T>(list)
.toArray()
.toArray(T::class.java)
}
fun <T> toArray(list: List<T>, clazz: Class<T>): Array<T> {
return SuperStream.of<T>(list)
.toArray(clazz)
}

View File

@ -16,7 +16,7 @@
* ProjectName mingli-utils
* ModuleName mingli-utils.main
* CurrentFile IO.kt
* LastUpdate 2025-09-20 11:46:19
* LastUpdate 2025-09-20 16:03:14
* UpdateUser MingLiPro
*/
@ -33,22 +33,22 @@ class IO {
@JvmStatic
fun print(vararg args: Any?) {
print(" ", *args)
printA(" ", *args)
}
@JvmStatic
fun println(vararg args: Any?) {
println(" ", *args)
printlnA(" ", *args)
}
@JvmStatic
fun println(sp: String = " ", vararg args: Any?) {
print(" ", *args)
fun printlnA(sp: String, vararg args: Any?) {
printA(" ", *args)
kotlin.io.println()
}
@JvmStatic
fun print(sp: String = " ", vararg args: Any?) {
fun printA(sp: String = "", vararg args: Any?) {
if (args.isEmpty()) {
kotlin.io.println()
}