From 922d460fbea16f7f094f06a6d3ee603a6ee47813 Mon Sep 17 00:00:00 2001
From: VampireAchao
Date: Sat, 18 Jun 2022 22:32:49 +0800
Subject: [PATCH] =?UTF-8?q?LambdaUtil=E5=85=A5=E5=8F=82=E6=94=B9=E4=B8=BA?=
=?UTF-8?q?=E6=B3=9B=E5=9E=8B=EF=BC=8C=E8=83=BD=E9=80=9A=E8=BF=87=E5=9C=A8?=
=?UTF-8?q?=E6=96=B9=E6=B3=95=E6=8C=87=E5=AE=9A=E6=B3=9B=E5=9E=8B?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../java/cn/hutool/core/lang/func/LambdaUtil.java | 15 ++++++++++-----
1 file changed, 10 insertions(+), 5 deletions(-)
diff --git a/hutool-core/src/main/java/cn/hutool/core/lang/func/LambdaUtil.java b/hutool-core/src/main/java/cn/hutool/core/lang/func/LambdaUtil.java
index 7c7c5f062..d69fd6e60 100755
--- a/hutool-core/src/main/java/cn/hutool/core/lang/func/LambdaUtil.java
+++ b/hutool-core/src/main/java/cn/hutool/core/lang/func/LambdaUtil.java
@@ -54,11 +54,12 @@ public class LambdaUtil {
*
* @param func lambda
* @param 类型
+ * @param lambda的类型
* @return lambda实现类
* @author VampireAchao
*/
@SuppressWarnings("unchecked")
- public static Class getRealClass(final Serializable func) {
+ public static Class getRealClass(final T func) {
final LambdaInfo lambdaInfo = resolve(func);
return (Class) Opt.of(lambdaInfo).map(LambdaInfo::getInstantiatedTypes).filter(types -> types.length != 0).map(types -> types[types.length - 1]).orElseGet(lambdaInfo::getClazz);
}
@@ -68,9 +69,10 @@ public class LambdaUtil {
* 该缓存可能会在任意不定的时间被清除
*
* @param func 需要解析的 lambda 对象(无参方法)
+ * @param lambda的类型
* @return 返回解析后的结果
*/
- public static LambdaInfo resolve(final Serializable func) {
+ public static LambdaInfo resolve(final T func) {
return CACHE.computeIfAbsent(func.getClass().getName(), (key) -> {
final SerializedLambda serializedLambda = _resolve(func);
final String methodName = serializedLambda.getImplMethodName();
@@ -104,9 +106,10 @@ public class LambdaUtil {
* 获取lambda表达式函数(方法)名称
*
* @param func 函数(无参方法)
+ * @param lambda的类型
* @return 函数名称
*/
- public static String getMethodName(final Serializable func) {
+ public static String getMethodName(final T func) {
return resolve(func).getName();
}
@@ -120,11 +123,12 @@ public class LambdaUtil {
*
*
* @param func 函数
+ * @param lambda的类型
* @return 方法名称
* @throws IllegalArgumentException 非Getter或Setter方法
* @since 5.7.23
*/
- public static String getFieldName(final Serializable func) throws IllegalArgumentException {
+ public static String getFieldName(final T func) throws IllegalArgumentException {
return BeanUtil.getFieldName(getMethodName(func));
}
@@ -139,9 +143,10 @@ public class LambdaUtil {
*
*
* @param func 需要解析的 lambda 对象
+ * @param lambda的类型
* @return 返回解析后的结果
*/
- private static SerializedLambda _resolve(final Serializable func) {
+ private static SerializedLambda _resolve(final T func) {
if (func instanceof SerializedLambda) {
return (SerializedLambda) func;
}