diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/bean/PropDesc.java b/hutool-core/src/main/java/org/dromara/hutool/core/bean/PropDesc.java
index 8ab54f434..dbea6c5f2 100644
--- a/hutool-core/src/main/java/org/dromara/hutool/core/bean/PropDesc.java
+++ b/hutool-core/src/main/java/org/dromara/hutool/core/bean/PropDesc.java
@@ -15,7 +15,6 @@ package org.dromara.hutool.core.bean;
import org.dromara.hutool.core.annotation.AnnotationUtil;
import org.dromara.hutool.core.annotation.PropIgnore;
import org.dromara.hutool.core.convert.Convert;
-import org.dromara.hutool.core.func.LambdaUtil;
import org.dromara.hutool.core.reflect.*;
import org.dromara.hutool.core.reflect.method.MethodUtil;
@@ -180,12 +179,9 @@ public class PropDesc {
*/
public Object getValue(final Object bean) {
if (null != this.getter) {
- try{
- return LambdaUtil.buildGetter(this.getter).apply(bean);
- } catch (final Exception ignore){
- // issue#I96JIP,在jdk14+多模块项目中,存在权限问题,使用传统反射
- return MethodUtil.invoke(bean, this.getter);
- }
+ // issue#3671 JDK15+ 修改了lambda的策略,动态生成后在metaspace不会释放,导致资源占用高
+ //return LambdaUtil.buildGetter(this.getter).apply(bean);
+ return MethodUtil.invoke(bean, this.getter);
} else if (ModifierUtil.isPublic(this.field)) {
return FieldUtil.getFieldValue(bean, this.field);
}
diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/compress/ZipUtil.java b/hutool-core/src/main/java/org/dromara/hutool/core/compress/ZipUtil.java
index a947041ac..f1306a9a6 100644
--- a/hutool-core/src/main/java/org/dromara/hutool/core/compress/ZipUtil.java
+++ b/hutool-core/src/main/java/org/dromara/hutool/core/compress/ZipUtil.java
@@ -137,6 +137,7 @@ public class ZipUtil {
}
}
+ // region ----- zip
/**
* 打包到当前目录,使用默认编码UTF-8
*
@@ -428,7 +429,9 @@ public class ZipUtil {
return zipFile;
}
- // ---------------------------------------------------------------------------------------------- Unzip
+ // endregion
+
+ // region ----- unzip
/**
* 解压到文件名相同的目录中,默认编码UTF-8
@@ -579,6 +582,47 @@ public class ZipUtil {
return outFile;
}
+ /**
+ * 解压
+ * ZIP条目不使用高速缓冲。
+ *
+ * @param in zip文件流,使用完毕自动关闭
+ * @param outFile 解压到的目录
+ * @param charset 编码
+ * @return 解压的目录
+ * @throws HutoolException IO异常
+ * @since 4.5.8
+ */
+ public static File unzip(final InputStream in, final File outFile, Charset charset) throws HutoolException {
+ if (null == charset) {
+ charset = DEFAULT_CHARSET;
+ }
+
+ return unzip(new ZipInputStream(in, charset), outFile);
+ }
+
+ /**
+ * 解压
+ * ZIP条目不使用高速缓冲。
+ *
+ * @param zipStream zip文件流,包含编码信息
+ * @param outFile 解压到的目录
+ * @return 解压的目录
+ * @throws HutoolException IO异常
+ * @since 4.5.8
+ */
+ public static File unzip(final ZipInputStream zipStream, final File outFile) throws HutoolException {
+ try (final ZipReader reader = new ZipReader(zipStream)) {
+ reader.readTo(outFile);
+ }
+ return outFile;
+ }
+
+
+ // endregion
+
+ // region ----- get and read
+
/**
* 获取压缩包中的指定文件流
*
@@ -621,41 +665,6 @@ public class ZipUtil {
}
}
- /**
- * 解压
- * ZIP条目不使用高速缓冲。
- *
- * @param in zip文件流,使用完毕自动关闭
- * @param outFile 解压到的目录
- * @param charset 编码
- * @return 解压的目录
- * @throws HutoolException IO异常
- * @since 4.5.8
- */
- public static File unzip(final InputStream in, final File outFile, Charset charset) throws HutoolException {
- if (null == charset) {
- charset = DEFAULT_CHARSET;
- }
- return unzip(new ZipInputStream(in, charset), outFile);
- }
-
- /**
- * 解压
- * ZIP条目不使用高速缓冲。
- *
- * @param zipStream zip文件流,包含编码信息
- * @param outFile 解压到的目录
- * @return 解压的目录
- * @throws HutoolException IO异常
- * @since 4.5.8
- */
- public static File unzip(final ZipInputStream zipStream, final File outFile) throws HutoolException {
- try (final ZipReader reader = new ZipReader(zipStream)) {
- reader.readTo(outFile);
- }
- return outFile;
- }
-
/**
* 读取并处理Zip流中的每一个{@link ZipEntry}
*
@@ -669,6 +678,10 @@ public class ZipUtil {
}
}
+ // endregion
+
+ // region ----- unzipFileBytes
+
/**
* 从Zip文件中提取指定的文件为bytes
*
@@ -721,7 +734,9 @@ public class ZipUtil {
}
}
- // ----------------------------------------------------------------------------- Gzip
+ // endregion
+
+ // region ----- gzip
/**
* Gzip压缩处理
@@ -790,6 +805,10 @@ public class ZipUtil {
return bos.toByteArray();
}
+ // endregion
+
+ // region ----- unGzip
+
/**
* Gzip解压缩处理
*
@@ -839,7 +858,9 @@ public class ZipUtil {
return bos.toByteArray();
}
- // ----------------------------------------------------------------------------- Zlib
+ // endregion
+
+ // region ----- zlib
/**
* Zlib压缩处理
@@ -911,6 +932,10 @@ public class ZipUtil {
return out.toByteArray();
}
+ // endregion
+
+ // region ----- unZlib
+
/**
* Zlib解压缩处理
*
@@ -959,6 +984,8 @@ public class ZipUtil {
return out.toByteArray();
}
+ // endregion
+
/**
* 获取Zip文件中指定目录下的所有文件,只显示文件,不显示目录
* 此方法并不会关闭{@link ZipFile}。