From 27d67c4d84a9ff5e5d21b464bc6dc6fa604e7582 Mon Sep 17 00:00:00 2001 From: Looly Date: Thu, 7 Mar 2024 12:46:02 +0800 Subject: [PATCH] fix bug --- .../main/java/org/dromara/hutool/core/bean/PropDesc.java | 8 ++++++-- .../java/org/dromara/hutool/core/func/LambdaFactory.java | 7 +++++-- 2 files changed, 11 insertions(+), 4 deletions(-) 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 18ac56efa..02374287c 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 @@ -166,8 +166,12 @@ public class PropDesc { */ public Object getValue(final Object bean) { if (null != this.getter) { - //return MethodUtil.invoke(bean, this.getter); - return LambdaUtil.buildGetter(this.getter).apply(bean); + try{ + return LambdaUtil.buildGetter(this.getter).apply(bean); + } catch (final Exception ignore){ + // issue#I96JIP,在jdk14+多模块项目中,存在权限问题,使用传统反射 + 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/func/LambdaFactory.java b/hutool-core/src/main/java/org/dromara/hutool/core/func/LambdaFactory.java index f424e9d99..58b25d37c 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/func/LambdaFactory.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/func/LambdaFactory.java @@ -28,9 +28,8 @@ import java.util.Map; /** * 以类似反射的方式动态创建Lambda,在性能上有一定优势,同时避免每次调用Lambda时创建匿名内部类 - * TODO JDK9+存在兼容问题,当参数为原始类型时报错 * - * @author nasodaengineer + * @author nasodaengineer */ public class LambdaFactory { @@ -108,6 +107,10 @@ public class LambdaFactory { /** * 通过Lambda函数代理方法或构造 + *

+ * TODO 在多模块项目中,使用module-info.java声明的模块项目,使用此方法获取的Lookup对象存在权限不足问题
+ * 见:https://gitee.com/dromara/hutool/issues/I96JIP + *

* * @param funcType 函数类型 * @param funcMethod 函数执行的方法